fix: show sync warnings in settings
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
let loading = false
|
||||
let errorMsg = ''
|
||||
let resultMsg = ''
|
||||
let resultKind = ''
|
||||
|
||||
let serverUrl = ''
|
||||
let username = ''
|
||||
@@ -41,6 +42,7 @@
|
||||
async function testConnection() {
|
||||
loading = true
|
||||
errorMsg = ''
|
||||
resultKind = ''
|
||||
connectionOk = null
|
||||
try {
|
||||
await wailsCall('SyncTestConnection', serverUrl, username, password)
|
||||
@@ -56,6 +58,7 @@
|
||||
async function configureSync() {
|
||||
loading = true
|
||||
errorMsg = ''
|
||||
resultKind = ''
|
||||
try {
|
||||
await wailsCall('SyncConfigure', serverUrl, username, password)
|
||||
resultMsg = 'configured'
|
||||
@@ -69,12 +72,29 @@
|
||||
loading = false
|
||||
}
|
||||
|
||||
function syncResultWarning(result) {
|
||||
const conflicts = Array.isArray(result?.conflicts) ? result.conflicts : []
|
||||
const applyErrors = Array.isArray(result?.applyErrors) ? result.applyErrors : []
|
||||
const parts = []
|
||||
if (conflicts.length > 0) {
|
||||
parts.push(t('sync.conflictsCount', { count: conflicts.length }))
|
||||
}
|
||||
if (applyErrors.length > 0) {
|
||||
parts.push(t('sync.applyErrorsCount', { count: applyErrors.length }))
|
||||
}
|
||||
return parts.join(' · ')
|
||||
}
|
||||
|
||||
async function runSyncNow() {
|
||||
loading = true
|
||||
errorMsg = ''
|
||||
resultKind = ''
|
||||
try {
|
||||
const r = await wailsCall('SyncNow')
|
||||
resultMsg = 'pushed ' + r.pushed + ', pulled ' + r.pulled
|
||||
const summary = t('sync.pushedPulled', { pushed: r?.pushed || 0, pulled: r?.pulled || 0 })
|
||||
const warning = syncResultWarning(r)
|
||||
resultMsg = warning ? summary + ' · ' + warning : summary
|
||||
resultKind = warning ? 'warning' : ''
|
||||
await load()
|
||||
if (onRefresh) onRefresh()
|
||||
} catch (e) {
|
||||
@@ -87,6 +107,7 @@
|
||||
try {
|
||||
await wailsCall('SyncSetInterval', syncInterval)
|
||||
resultMsg = t('sync.settingsSaved')
|
||||
resultKind = ''
|
||||
} catch (e) { errorMsg = String(e) }
|
||||
}
|
||||
|
||||
@@ -97,6 +118,7 @@
|
||||
async function doDisconnect() {
|
||||
showDisconnectConfirm = false
|
||||
loading = true
|
||||
resultKind = ''
|
||||
try {
|
||||
await wailsCall('SyncDisconnect')
|
||||
resultMsg = 'disconnected'
|
||||
@@ -113,6 +135,7 @@
|
||||
async function doResetKey() {
|
||||
showResetKeyConfirm = false
|
||||
loading = true
|
||||
resultKind = ''
|
||||
try {
|
||||
await wailsCall('ResetSyncKey')
|
||||
resultMsg = 'key reset'
|
||||
@@ -143,7 +166,7 @@
|
||||
<div class="error-msg">{errorMsg}</div>
|
||||
{/if}
|
||||
{#if resultMsg && !errorMsg}
|
||||
<div class="result-msg">{resultMsg}</div>
|
||||
<div class="result-msg" class:warning={resultKind === 'warning'}>{resultMsg}</div>
|
||||
{/if}
|
||||
|
||||
{#if settings && settings.enabled}
|
||||
@@ -375,6 +398,11 @@
|
||||
color: #34d399;
|
||||
font-size: 0.85rem;
|
||||
}
|
||||
.result-msg.warning {
|
||||
background: rgba(245, 158, 11, 0.1);
|
||||
border-color: rgba(245, 158, 11, 0.3);
|
||||
color: #f59e0b;
|
||||
}
|
||||
.modal-overlay {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
|
||||
@@ -408,6 +408,7 @@ export default {
|
||||
'sync.running': 'Syncing...',
|
||||
'sync.conflictsCount': 'Conflicts: {count}',
|
||||
'sync.applyErrorsCount': 'Apply errors: {count}',
|
||||
'sync.pushedPulled': 'Pushed: {pushed}, pulled: {pulled}',
|
||||
'error.generic': 'An error occurred',
|
||||
'error.invalidCredentials': 'Invalid username or password',
|
||||
'error.accountBlocked': 'Account blocked',
|
||||
|
||||
@@ -432,6 +432,7 @@ export default {
|
||||
'sync.running': 'Синхронизация...',
|
||||
'sync.conflictsCount': 'Конфликты: {count}',
|
||||
'sync.applyErrorsCount': 'Ошибки применения: {count}',
|
||||
'sync.pushedPulled': 'Отправлено: {pushed}, получено: {pulled}',
|
||||
|
||||
'error.generic': 'Произошла ошибка',
|
||||
'error.invalidCredentials': 'Неверный логин или пароль',
|
||||
|
||||
Reference in New Issue
Block a user