diff --git a/client/components/Reader/ServerStorage/ServerStorage.vue b/client/components/Reader/ServerStorage/ServerStorage.vue
index 60f6175c..d621c361 100644
--- a/client/components/Reader/ServerStorage/ServerStorage.vue
+++ b/client/components/Reader/ServerStorage/ServerStorage.vue
@@ -128,7 +128,7 @@ class ServerStorage extends Vue {
if (!this.profiles[this.currentProfile]) {
this.commit('reader/setCurrentProfile', '');
}
- this.warning('Не удалось отправить данные на сервер');
+ this.error('Не удалось отправить данные на сервер');
} else {
this.oldProfiles = this.profiles;
this.commit('reader/setProfilesRev', this.profilesRev + 1);
diff --git a/client/components/Reader/SettingsPage/SettingsPage.vue b/client/components/Reader/SettingsPage/SettingsPage.vue
index d830e525..d487c2e3 100644
--- a/client/components/Reader/SettingsPage/SettingsPage.vue
+++ b/client/components/Reader/SettingsPage/SettingsPage.vue
@@ -33,6 +33,7 @@
Добавить
Удалить
+ Удалить все
@@ -547,7 +548,7 @@ class SettingsPage extends Vue {
async setDefaults() {
try {
- if (await this.$confirm('Подтвердите установку настроек по-умолчанию', '', {
+ if (await this.$confirm('Подтвердите установку настроек по-умолчанию:', '', {
confirmButtonText: 'OK',
cancelButtonText: 'Отмена',
type: 'warning'
@@ -564,17 +565,21 @@ class SettingsPage extends Vue {
async addProfile() {
try {
- const result = await this.$prompt('Введите произвольное название для профиля устройства', '', {
+ if (Object.keys(this.profiles).length >= 100) {
+ this.$alert('Достигнут предел количества профилей', 'Ошибка');
+ return;
+ }
+ const result = await this.$prompt('Введите произвольное название для профиля устройства:', '', {
confirmButtonText: 'OK',
cancelButtonText: 'Отмена',
- inputValidator: (str) => { if (str.length > 50) return 'Слишком длинное название'; else return true; },
+ inputValidator: (str) => { if (!str) return 'Название не должно быть пустым'; else if (str.length > 50) return 'Слишком длинное название'; else return true; },
});
if (result.value) {
if (this.profiles[result.value]) {
this.$alert('Такой профиль уже существует', 'Ошибка');
} else {
this.currentProfile = result.value;
- await this.$nextTick();
+ await this.$nextTick();//даем возможность обновить currentProfile
const newProfiles = Object.assign({}, this.profiles, {[result.value]: 1});
this.commit('reader/setProfiles', newProfiles);
}
@@ -585,9 +590,63 @@ class SettingsPage extends Vue {
}
async delProfile() {
+ if (!this.currentProfile)
+ return;
+
+ try {
+ const result = await this.$prompt(`Предупреждение! Удаление профиля '${this.currentProfile}' необратимо.` +
+ `
Все настройки профиля будут потеряны,
однако список читаемых книг сохранится.` +
+ `
Введите 'да' для подтверждения удаления:`, '', {
+ dangerouslyUseHTMLString: true,
+ confirmButtonText: 'OK',
+ cancelButtonText: 'Отмена',
+ inputValidator: (str) => { if (str && str.toLowerCase() === 'да') return true; else return 'Удаление не подтверждено'; },
+ type: 'warning'
+ });
+
+ if (result.value && result.value.toLowerCase() == 'да') {
+ if (this.profiles[this.currentProfile]) {
+ const newProfiles = Object.assign({}, this.profiles);
+ delete newProfiles[this.currentProfile];
+ this.commit('reader/setProfiles', newProfiles);
+ await this.$nextTick();//даем возможность сохранить profiles
+ this.currentProfile = '';
+ }
+ }
+ } catch (e) {
+ //
+ }
+ }
+
+ async delAllProfiles() {
+ if (!Object.keys(this.profiles).length)
+ return;
+
+ try {
+ const result = await this.$prompt(`Предупреждение! Удаление ВСЕХ профилей необратимо.` +
+ `
Введите 'да' для подтверждения удаления:`, '', {
+ dangerouslyUseHTMLString: true,
+ confirmButtonText: 'OK',
+ cancelButtonText: 'Отмена',
+ inputValidator: (str) => { if (str && str.toLowerCase() === 'да') return true; else return 'Удаление не подтверждено'; },
+ type: 'warning'
+ });
+
+ if (result.value && result.value.toLowerCase() == 'да') {
+ if (!this.currentProfile)
+ this.currentProfile = Object.keys(this.profiles)[0];
+ await this.$nextTick();//даем возможность обновить currentProfile
+ this.commit('reader/setProfiles', {});
+ await this.$nextTick();//даем возможность сохранить profiles
+ this.currentProfile = '';
+ }
+ } catch (e) {
+ //
+ }
}
async showServerStorageKey() {
+
}
async enterServerStorageKey() {