better error/warnings

This commit is contained in:
Henry Jameson 2021-03-08 21:00:43 +02:00
parent dda95543e8
commit 395e12cbc6
3 changed files with 66 additions and 13 deletions

View file

@ -19,6 +19,9 @@ import {
faWindowMinimize faWindowMinimize
} from '@fortawesome/free-regular-svg-icons' } from '@fortawesome/free-regular-svg-icons'
const PLEROMAFE_SETTINGS_MAJOR_VERSION = 1
const PLEROMAFE_SETTINGS_MINOR_VERSION = 0
library.add( library.add(
faTimes, faTimes,
faWindowMinimize, faWindowMinimize,
@ -65,12 +68,52 @@ const SettingsModal = {
this.$store.dispatch('togglePeekSettingsModal') this.$store.dispatch('togglePeekSettingsModal')
}, },
importValidator (data) { importValidator (data) {
return data._pleroma_settings_version[0] === 1 if (!Array.isArray(data._pleroma_settings_version)) {
return {
messageKey: 'settings.file_import_export.invalid_file'
}
}
const [major, minor] = data._pleroma_settings_version
if (major > PLEROMAFE_SETTINGS_MAJOR_VERSION) {
return {
messageKey: 'settings.file_export_import.errors.file_too_new',
messageArgs: {
fileMajor: major,
feMajor: PLEROMAFE_SETTINGS_MAJOR_VERSION
}
}
}
if (major < PLEROMAFE_SETTINGS_MAJOR_VERSION) {
return {
messageKey: 'settings.file_export_import.errors.file_too_old',
messageArgs: {
fileMajor: major,
feMajor: PLEROMAFE_SETTINGS_MAJOR_VERSION
}
}
}
if (minor > PLEROMAFE_SETTINGS_MINOR_VERSION) {
this.$store.dispatch('pushGlobalNotice', {
level: 'warning',
messageKey: 'settings.file_export_import.errors.file_slightly_new',
})
}
return true
}, },
onImportFailure () { onImportFailure (result) {
if (result.error) {
this.$store.dispatch('pushGlobalNotice', { messageKey: 'settings.invalid_settings_imported', level: 'error' }) this.$store.dispatch('pushGlobalNotice', { messageKey: 'settings.invalid_settings_imported', level: 'error' })
} else {
this.$store.dispatch('pushGlobalNotice', { ...result.validationResult, level: 'error' })
}
}, },
onImport (data) { onImport (data) {
if (data)
this.$store.dispatch('loadSettings', data) this.$store.dispatch('loadSettings', data)
}, },
restore () { restore () {
@ -99,7 +142,10 @@ const SettingsModal = {
) )
} }
const clone = cloneDeep(sample) const clone = cloneDeep(sample)
clone._pleroma_settings_version = [1, 0] clone._pleroma_settings_version = [
PLEROMAFE_SETTINGS_MAJOR_VERSION,
PLEROMAFE_SETTINGS_MINOR_VERSION
]
return clone return clone
} }
}, },

View file

@ -67,7 +67,7 @@
class="btn button-default" class="btn button-default"
:title="$t('general.close')" :title="$t('general.close')"
> >
<span>{{ $t("settings.backup_restore") }}</span> <span>{{ $t("settings.file_export_import.backup_restore") }}</span>
<FAIcon <FAIcon
icon="chevron-down" icon="chevron-down"
/> />
@ -85,7 +85,7 @@
<FAIcon <FAIcon
icon="file-download" icon="file-download"
fixed-width fixed-width
/><span>{{ $t("settings.backup_settings") }}</span> /><span>{{ $t("settings.file_export_import.backup_settings") }}</span>
</button> </button>
<button <button
class="button-default dropdown-item dropdown-item-icon" class="button-default dropdown-item dropdown-item-icon"
@ -95,7 +95,7 @@
<FAIcon <FAIcon
icon="file-download" icon="file-download"
fixed-width fixed-width
/><span>{{ $t("settings.backup_settings_theme") }}</span> /><span>{{ $t("settings.file_export_import.backup_settings_theme") }}</span>
</button> </button>
<button <button
class="button-default dropdown-item dropdown-item-icon" class="button-default dropdown-item dropdown-item-icon"
@ -105,7 +105,7 @@
<FAIcon <FAIcon
icon="file-upload" icon="file-upload"
fixed-width fixed-width
/><span>{{ $t("settings.restore_settings") }}</span> /><span>{{ $t("settings.file_export_import.restore_settings") }}</span>
</button> </button>
</div> </div>
</div> </div>

View file

@ -357,7 +357,6 @@
"interface": "Interface", "interface": "Interface",
"interfaceLanguage": "Interface language", "interfaceLanguage": "Interface language",
"invalid_theme_imported": "The selected file is not a supported Pleroma theme. No changes to your theme were made.", "invalid_theme_imported": "The selected file is not a supported Pleroma theme. No changes to your theme were made.",
"invalid_settings_imported": "The selected file is not a supported Pleroma settings backup. No changes were made.",
"limited_availability": "Unavailable in your browser", "limited_availability": "Unavailable in your browser",
"links": "Links", "links": "Links",
"lock_account_description": "Restrict your account to approved followers only", "lock_account_description": "Restrict your account to approved followers only",
@ -365,10 +364,18 @@
"loop_video_silent_only": "Loop only videos without sound (i.e. Mastodon's \"gifs\")", "loop_video_silent_only": "Loop only videos without sound (i.e. Mastodon's \"gifs\")",
"mutes_tab": "Mutes", "mutes_tab": "Mutes",
"play_videos_in_modal": "Play videos in a popup frame", "play_videos_in_modal": "Play videos in a popup frame",
"file_export_import": {
"backup_restore": "Settings backup", "backup_restore": "Settings backup",
"backup_settings": "Backup settings to file", "backup_settings": "Backup settings to file",
"backup_settings_theme": "Backup settings and theme to file", "backup_settings_theme": "Backup settings and theme to file",
"restore_settings": "Restore settings from file", "restore_settings": "Restore settings from file",
"errors": {
"invalid_file": "The selected file is not a supported Pleroma settings backup. No changes were made.",
"file_too_new": "Incompatile major version: {fileMajor}, this PleromaFE (settings ver {feMajor}) is too old to handle it",
"file_too_old": "Incompatile major version: {fileMajor}, file version is too old and not supported (min. set. ver. {feMajor})",
"file_slightly_new": "File minor version is different, some settings might not load"
}
},
"profile_fields": { "profile_fields": {
"label": "Profile metadata", "label": "Profile metadata",
"add_field": "Add Field", "add_field": "Add Field",