mirror of https://github.com/Wox-launcher/Wox
feat(setting): enhance auto backup tips with folder link and dynamic content #4222
* Updated backup tips to include a link to the backup folder. * Added a new method `getBackupFolder` to retrieve the backup directory. * Modified the `formField` to accept custom tips for better flexibility.
This commit is contained in:
parent
093088771c
commit
9d9c173ae9
|
@ -140,7 +140,10 @@
|
|||
"ui_cancel": "Cancel",
|
||||
"ui_delete": "Delete",
|
||||
"ui_data_backup_auto_title": "Auto Backup",
|
||||
"ui_data_backup_auto_tips": "Enable auto backup to backup your data daily",
|
||||
"ui_data_backup_auto_tips": "Enable auto backup to backup your data daily in data folder",
|
||||
"ui_data_backup_auto_tips_prefix": "Enable auto backup to backup your data daily in",
|
||||
"ui_data_backup_folder_link": "backup folder",
|
||||
"ui_data_backup_auto_tips_suffix": "",
|
||||
"ui_data_backup_list_title": "Backup List",
|
||||
"ui_data_backup_now": "Backup Now",
|
||||
"ui_data_backup_refresh": "Refresh",
|
||||
|
|
|
@ -126,7 +126,10 @@
|
|||
"ui_cancel": "Cancelar",
|
||||
"ui_delete": "Excluir",
|
||||
"ui_data_backup_auto_title": "Backup automático",
|
||||
"ui_data_backup_auto_tips": "Habilitar backup automático para salvar as configurações do Wox diariamente",
|
||||
"ui_data_backup_auto_tips": "Habilitar backup automático para salvar as configurações do Wox diariamente na pasta data",
|
||||
"ui_data_backup_auto_tips_prefix": "Habilitar backup automático para salvar dados diariamente na",
|
||||
"ui_data_backup_folder_link": "pasta de backup",
|
||||
"ui_data_backup_auto_tips_suffix": "",
|
||||
"ui_data_backup_list_title": "Lista de backups",
|
||||
"ui_data_backup_now": "Fazer backup agora",
|
||||
"ui_data_backup_refresh": "Atualizar",
|
||||
|
|
|
@ -126,7 +126,10 @@
|
|||
"ui_cancel": "Отмена",
|
||||
"ui_delete": "Удалить",
|
||||
"ui_data_backup_auto_title": "Автоматическая резервная копия",
|
||||
"ui_data_backup_auto_tips": "Включить автоматическую резервную копию для ежедневного резервного копирования настроек Wox",
|
||||
"ui_data_backup_auto_tips": "Включить автоматическую резервную копию для ежедневного резервного копирования настроек Wox в папку data",
|
||||
"ui_data_backup_auto_tips_prefix": "Включить автоматическое резервное копирование данных ежедневно в",
|
||||
"ui_data_backup_folder_link": "папку резервных копий",
|
||||
"ui_data_backup_auto_tips_suffix": "",
|
||||
"ui_data_backup_list_title": "Список резервных копий",
|
||||
"ui_data_backup_now": "Сделать резервную копию сейчас",
|
||||
"ui_data_backup_refresh": "Обновить",
|
||||
|
|
|
@ -140,7 +140,10 @@
|
|||
"ui_cancel": "取消",
|
||||
"ui_delete": "删除",
|
||||
"ui_data_backup_auto_title": "自动备份",
|
||||
"ui_data_backup_auto_tips": "启用自动备份,每天备份一次Wox设置",
|
||||
"ui_data_backup_auto_tips": "启用自动备份,每天在data文件夹中备份一次Wox设置",
|
||||
"ui_data_backup_auto_tips_prefix": "启用自动备份,每天在",
|
||||
"ui_data_backup_folder_link": "备份文件夹",
|
||||
"ui_data_backup_auto_tips_suffix": "中备份数据",
|
||||
"ui_data_backup_list_title": "备份列表",
|
||||
"ui_data_backup_now": "立即备份",
|
||||
"ui_data_backup_refresh": "刷新",
|
||||
|
|
|
@ -83,6 +83,7 @@ var routers = map[string]func(w http.ResponseWriter, r *http.Request){
|
|||
"/backup/now": handleBackupNow,
|
||||
"/backup/restore": handleBackupRestore,
|
||||
"/backup/all": handleBackupAll,
|
||||
"/backup/folder": handleBackupFolder,
|
||||
"/hotkey/available": handleHotkeyAvailable,
|
||||
"/query/icon": handleQueryIcon,
|
||||
"/query/ratio": handleQueryRatio,
|
||||
|
@ -630,6 +631,18 @@ func handleBackupAll(w http.ResponseWriter, r *http.Request) {
|
|||
writeSuccessResponse(w, backups)
|
||||
}
|
||||
|
||||
func handleBackupFolder(w http.ResponseWriter, r *http.Request) {
|
||||
backupDir := util.GetLocation().GetBackupDirectory()
|
||||
|
||||
// Ensure backup directory exists
|
||||
if err := util.GetLocation().EnsureDirectoryExist(backupDir); err != nil {
|
||||
writeErrorResponse(w, fmt.Sprintf("Failed to create backup directory: %s", err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
writeSuccessResponse(w, backupDir)
|
||||
}
|
||||
|
||||
func handleHotkeyAvailable(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := util.NewTraceContext()
|
||||
|
||||
|
|
|
@ -203,6 +203,10 @@ class WoxApi {
|
|||
await WoxHttpUtil.instance.postData("/backup/restore", {"id": id});
|
||||
}
|
||||
|
||||
Future<String> getBackupFolder() async {
|
||||
return await WoxHttpUtil.instance.postData("/backup/folder", null);
|
||||
}
|
||||
|
||||
Future<void> open(String path) async {
|
||||
await WoxHttpUtil.instance.postData("/open", {"path": path});
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@ abstract class WoxSettingBaseView extends GetView<WoxSettingController> {
|
|||
);
|
||||
}
|
||||
|
||||
Widget formField({required String label, required Widget child, String? tips, double labelWidth = 160}) {
|
||||
Widget formField({required String label, required Widget child, String? tips, Widget? customTips, double labelWidth = 160}) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.only(bottom: 20),
|
||||
child: Column(
|
||||
|
@ -41,7 +41,7 @@ abstract class WoxSettingBaseView extends GetView<WoxSettingController> {
|
|||
),
|
||||
],
|
||||
),
|
||||
if (tips != null)
|
||||
if (tips != null || customTips != null)
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: 2),
|
||||
child: Row(
|
||||
|
@ -52,8 +52,8 @@ abstract class WoxSettingBaseView extends GetView<WoxSettingController> {
|
|||
child: SizedBox(width: labelWidth, child: const Text("")),
|
||||
),
|
||||
Flexible(
|
||||
child: Text(
|
||||
tips,
|
||||
child: customTips ?? Text(
|
||||
tips!,
|
||||
style: TextStyle(color: getThemeSubTextColor(), fontSize: 13),
|
||||
),
|
||||
),
|
||||
|
|
|
@ -7,10 +7,45 @@ import 'package:wox/utils/colors.dart';
|
|||
import 'package:wox/utils/picker.dart';
|
||||
import 'package:wox/utils/wox_theme_util.dart';
|
||||
import 'package:flutter/material.dart' as material;
|
||||
import 'package:wox/api/wox_api.dart';
|
||||
|
||||
class WoxSettingDataView extends WoxSettingBaseView {
|
||||
const WoxSettingDataView({super.key});
|
||||
|
||||
Widget _buildAutoBackupTips() {
|
||||
return Wrap(
|
||||
crossAxisAlignment: WrapCrossAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
controller.tr("ui_data_backup_auto_tips_prefix"),
|
||||
style: TextStyle(color: getThemeSubTextColor(), fontSize: 13),
|
||||
),
|
||||
HyperlinkButton(
|
||||
onPressed: () async {
|
||||
try {
|
||||
final backupPath = await WoxApi.instance.getBackupFolder();
|
||||
await controller.openFolder(backupPath);
|
||||
} catch (e) {
|
||||
// Handle error silently or show a notification
|
||||
}
|
||||
},
|
||||
child: Text(
|
||||
controller.tr("ui_data_backup_folder_link"),
|
||||
style: TextStyle(
|
||||
color: fromCssColor(WoxThemeUtil.instance.currentTheme.value.actionItemActiveBackgroundColor),
|
||||
fontSize: 13,
|
||||
decoration: TextDecoration.underline,
|
||||
),
|
||||
),
|
||||
),
|
||||
Text(
|
||||
controller.tr("ui_data_backup_auto_tips_suffix"),
|
||||
style: TextStyle(color: getThemeSubTextColor(), fontSize: 13),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return form(children: [
|
||||
|
@ -77,7 +112,8 @@ class WoxSettingDataView extends WoxSettingBaseView {
|
|||
},
|
||||
);
|
||||
}),
|
||||
tips: controller.tr("ui_data_backup_auto_tips"),
|
||||
tips: null,
|
||||
customTips: _buildAutoBackupTips(),
|
||||
),
|
||||
formField(
|
||||
label: controller.tr("ui_data_backup_list_title"),
|
||||
|
|
Loading…
Reference in New Issue