diff --git a/src/NebulaAuth/Core/DialogsController.cs b/src/NebulaAuth/Core/DialogsController.cs index 8ee1339..7d8790c 100644 --- a/src/NebulaAuth/Core/DialogsController.cs +++ b/src/NebulaAuth/Core/DialogsController.cs @@ -73,6 +73,22 @@ public static class DialogsController return null; } + public static async Task ShowMafileImportDialog(IEnumerable groups, + int totalCount, int conflictCount) + { + var vm = new MafileImportDialogVM(groups, totalCount, conflictCount); + var content = new MafileImportDialog + { + DataContext = vm + }; + var result = await DialogHost.Show(content); + return result is MafileImportDialogVM + ? new MafileImportDialogResult( + !vm.AddToGroup || string.IsNullOrWhiteSpace(vm.Group) ? null : vm.Group.Trim(), + vm.OverwriteConflicts) + : null; + } + public static async Task ShowProxyManager() { var vm = new ProxyManagerVM(); @@ -174,4 +190,4 @@ public static class DialogsController } #endregion -} \ No newline at end of file +} diff --git a/src/NebulaAuth/Localization/dialogs.loc.json b/src/NebulaAuth/Localization/dialogs.loc.json index 9749916..df5fecf 100644 --- a/src/NebulaAuth/Localization/dialogs.loc.json +++ b/src/NebulaAuth/Localization/dialogs.loc.json @@ -35,5 +35,67 @@ "tr": "Değer girin", "kk": "Мән енгізіңіз" } + }, + "MafileImportDialog": { + "Title": { + "en": "Mafile import", + "ru": "Импорт мафайлов", + "zh": "导入 mafile", + "uk": "Імпорт mafile", + "fr": "Import de mafiles", + "es": "Importación de mafiles", + "tr": "Mafile içe aktarma", + "kk": "Mafile импорттау" + }, + "TotalCount": { + "en": "Mafiles to import", + "ru": "Мафайлов к импорту", + "zh": "要导入的 mafile:", + "uk": "Mafile до імпорту:", + "fr": "Mafiles à importer :", + "es": "Mafiles para importar:", + "tr": "İçe aktarılacak mafile:", + "kk": "Импортталатын mafile:" + }, + "ConflictCount": { + "en": "Already exist", + "ru": "Уже существуют", + "zh": "已存在:", + "uk": "Уже існують:", + "fr": "Déjà existants :", + "es": "Ya existen:", + "tr": "Zaten mevcut:", + "kk": "Бұрыннан бар:" + }, + "OverwriteConflicts": { + "en": "Overwrite conflicting mafiles", + "ru": "Перезаписать конфликтующие мафайлы", + "zh": "覆盖冲突的 mafile", + "uk": "Перезаписати конфліктні mafile", + "fr": "Remplacer les mafiles en conflit", + "es": "Sobrescribir mafiles en conflicto", + "tr": "Çakışan mafile'ların üzerine yaz", + "kk": "Қақтығысатын mafile файлдарын қайта жазу" + }, + "AddToGroup": { + "en": "Add imported accounts to a group", + "ru": "Добавить импортированные аккаунты в группу", + "zh": "将导入的账号添加到组", + "uk": "Додати імпортовані акаунти до групи", + "fr": "Ajouter les comptes importés à un groupe", + "es": "Añadir las cuentas importadas a un grupo", + "tr": "İçe aktarılan hesapları bir gruba ekle", + "kk": "Импортталған аккаунттарды топқа қосу" + }, + "GroupFieldHint": { + "en": "Existing or new group", + "ru": "Существующая или новая группа", + "zh": "现有或新组", + "uk": "Наявна або нова група", + "fr": "Groupe existant ou nouveau", + "es": "Grupo existente o nuevo", + "tr": "Mevcut veya yeni grup", + "kk": "Бар немесе жаңа топ" + } } -} \ No newline at end of file +} diff --git a/src/NebulaAuth/Localization/dialogs.settings.loc.json b/src/NebulaAuth/Localization/dialogs.settings.loc.json index b6bd9a5..3ef9807 100644 --- a/src/NebulaAuth/Localization/dialogs.settings.loc.json +++ b/src/NebulaAuth/Localization/dialogs.settings.loc.json @@ -262,25 +262,25 @@ "kk": "Дискке сақталмайды" } }, - "LegacyMafileMode": { - "en": "Common mafiles format", - "ru": "Общепринятый формат мафайлов", - "zh": "常见的邮件文件格式", - "uk": "Загальноприйнятий формат мафайлів", - "fr": "Format de mafiles commun", - "es": "Formato común de mafiles", - "tr": "Ortak mafile formatı", - "kk": "Жалпы mafile форматы" + "ConfirmMafileImport": { + "en": "Ask confirmation when importing mafiles", + "ru": "Спрашивать подтверждение при импорте мафайлов", + "zh": "导入 mafile 时请求确认", + "uk": "Запитувати підтвердження під час імпорту mafile", + "fr": "Demander confirmation lors de l'import des mafiles", + "es": "Pedir confirmación al importar mafiles", + "tr": "Mafile içe aktarırken onay sor", + "kk": "Mafile импорттау кезінде растауды сұрау" }, - "LegacyMafileModeHint": { - "en": "Save mafiles in compatibility format with Steam Desktop Authenticator and other applications", - "ru": "Сохранять мафайлы в старом формате для совместимости со Steam Desktop Authenticator и другими приложениями", - "zh": "以与 Steam 桌面认证器及其他应用程序兼容的格式保存 mafiles", - "uk": "Зберігати мафайли у старому форматі для сумісності зі Steam Desktop Authenticator та іншими додатками", - "fr": "Enregistrer les mafiles dans un format compatible avec Steam Desktop Authenticator et d'autres applications", - "es": "Guardar mafiles en formato compatible con Steam Desktop Authenticator y otras aplicaciones", - "tr": "Mafile'ları Steam Desktop Authenticator ve diğer uygulamalarla uyumlu formatta kaydet", - "kk": "Mafile файлдарын Steam Desktop Authenticator және басқа қолданбалармен үйлесімді форматта сақтау" + "ConfirmMafileImportHint": { + "en": "Allows selecting a group when importing maFiles. Does not affect showing the dialog when file conflicts occur", + "ru": "Позволяет выбрать группу при импорте maFiles. Не влияет на показ окна при конфликте файлов", + "zh": "允许在导入 maFiles 时选择分组。不影响发生文件冲突时窗口的显示", + "uk": "Дозволяє вибрати групу під час імпорту maFiles. Не впливає на показ вікна при конфлікті файлів", + "fr": "Permet de choisir un groupe lors de l'import des maFiles. N'affecte pas l'affichage de la fenêtre en cas de conflit de fichiers", + "es": "Permite seleccionar un grupo al importar maFiles. No afecta a la aparición de la ventana cuando hay conflictos de archivos", + "tr": "maFiles içe aktarılırken grup seçilmesine izin verir. Dosya çakışmalarında pencerenin gösterilmesini etkilemez", + "kk": "maFiles импорттау кезінде топ таңдауға мүмкіндік береді. Файл қайшылықтары болғанда терезенің көрсетілуіне әсер етпейді" }, "AllowAutoUpdate": { "en": "Allow auto update", @@ -333,4 +333,4 @@ "kk": "Steam техникалық жұмыстар жүргізген кезде әр сейсенбіде (GMT бойынша сәрсенбі түні) пайда болатын және авторастау таймерлерін қажетсіз өшіретін қателерді елемеу" } } -} \ No newline at end of file +} diff --git a/src/NebulaAuth/Localization/mainwindow.loc.json b/src/NebulaAuth/Localization/mainwindow.loc.json index ca22364..8a54a68 100644 --- a/src/NebulaAuth/Localization/mainwindow.loc.json +++ b/src/NebulaAuth/Localization/mainwindow.loc.json @@ -101,16 +101,6 @@ "tr": "Onay hatası", "kk": "Растау қатесі" }, - "ConfirmMafileOverwrite": { - "ru": "Внимание, мафайл(-ы) уже присутствует в папке mafiles.\r\nПерезаписать мафайлы, которые конфликтуют?", - "en": "Attention, mafile(-s) already exists in mafiles folder.\r\nOverwrite conflicting mafiles?", - "zh": "注意,mafile 已经存在于 mafiles 文件夹中。\r\n覆盖冲突的 mafiles 吗?", - "uk": "Увага, мафайл(-и) вже присутній у папці mafiles.\r\nПерезаписати мафайли, які конфліктують?", - "fr": "Attention, mafiles déjà présents dans le dossier mafiles.\r\nRemplacer les mafiles en conflit?", - "es": "Atención, los mafiles ya existen en la carpeta mafiles.\r\n¿Sobrescribir los mafiles en conflicto?", - "tr": "Dikkat, mafile(ler) zaten mafiles klasöründe mevcut.\r\nÇakışan mafile'lar üzerine yazılsın mı?", - "kk": "Назар аударыңыз, mafile(дер) mafiles қалтасында бар.\r\nҚайшылық тудырған mafile файлдарының үстінен жазу керек пе?" - }, "MafileImportError": { "ru": "Ошибка при импорте мафайла", "en": "Mafile import error", diff --git a/src/NebulaAuth/Model/NebulaSerializer.cs b/src/NebulaAuth/Model/NebulaSerializer.cs index 7908887..26aa14a 100644 --- a/src/NebulaAuth/Model/NebulaSerializer.cs +++ b/src/NebulaAuth/Model/NebulaSerializer.cs @@ -85,11 +85,6 @@ public static class NebulaSerializer public static string SerializeMafile(MobileDataExtended data, Dictionary? properties) { - if (Settings.Instance.LegacyMode) - { - return MafileSerializer.SerializeLegacy(data, Serializer.Settings.SerializationOptions, properties); - } - - return Serializer.Serialize(data); + return MafileSerializer.SerializeLegacy(data, Serializer.Settings.SerializationOptions, properties); } -} \ No newline at end of file +} diff --git a/src/NebulaAuth/Model/Settings.cs b/src/NebulaAuth/Model/Settings.cs index afa052b..130a387 100644 --- a/src/NebulaAuth/Model/Settings.cs +++ b/src/NebulaAuth/Model/Settings.cs @@ -91,7 +91,7 @@ public partial class Settings : ObservableObject [ObservableProperty] private Color? _iconColor; [ObservableProperty] private bool _isPasswordSet; [ObservableProperty] private LocalizationLanguage _language = LocalizationLanguage.English; - [ObservableProperty] private bool _legacyMode = true; + [ObservableProperty] private bool _confirmMafileImport = true; [ObservableProperty] private bool _allowAutoUpdate; [ObservableProperty] private bool _useAccountNameAsMafileName; @@ -127,4 +127,4 @@ public enum ThemeType Light = 2, Luxury = 3, Shadcn = 4 -} \ No newline at end of file +} diff --git a/src/NebulaAuth/View/Dialogs/MafileImportDialog.xaml b/src/NebulaAuth/View/Dialogs/MafileImportDialog.xaml new file mode 100644 index 0000000..9645356 --- /dev/null +++ b/src/NebulaAuth/View/Dialogs/MafileImportDialog.xaml @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +