@@ -5,6 +5,7 @@ import type { AssetItem, AssetPageType, CharsetType, LayoutsType, ResolutionType
55import SkeletonCard from " ~/components/Card/GridCard/skeletonCard.vue" ;
66
77import ConnectionEditor from " ~/components/ConnectionEditor/connectionEditor.vue" ;
8+ import { useSettingStorage } from " ~/composables/useSettingStorage" ;
89import { useUserInfoStore } from " ~/store/modules/userInfo" ;
910
1011const props = defineProps <{
@@ -25,7 +26,17 @@ const contextMenu = useContextMenu();
2526const userInfoStore = useUserInfoStore ();
2627const assetManagement = useAssetManagement ();
2728const settingManager = useSettingManager ();
28- const { layouts } = settingManager ;
29+ const { defaults : settingDefaults } = useSettingStorage ();
30+ const {
31+ layouts,
32+ charset,
33+ rdpResolution,
34+ backspaceAsCtrlH,
35+ keyboardLayout,
36+ rdpClientOption,
37+ rdpColorQuality,
38+ rdpSmartSize
39+ } = settingManager ;
2940const {
3041 setCharsetPreference,
3142 setRdpResolutionPreference,
@@ -46,6 +57,27 @@ const { visibleAssets } = useDisplayAssets(
4657 computed (() => props .platform )
4758);
4859
60+ const isSameArray = (left ? : string [], right ? : string []) => {
61+ const l = Array .isArray (left ) ? left : [];
62+ const r = Array .isArray (right ) ? right : [];
63+ if (l .length !== r .length ) return false ;
64+ const ls = [... l ].sort ();
65+ const rs = [... r ].sort ();
66+ return ls .every ((item , idx ) => item === rs [idx ]);
67+ };
68+
69+ const isUsingLocalDefaults = () => {
70+ return (
71+ (charset .value || settingDefaults .charset ) === settingDefaults .charset
72+ && (rdpResolution .value || settingDefaults .rdpResolution ) === settingDefaults .rdpResolution
73+ && (backspaceAsCtrlH .value ?? settingDefaults .backspaceAsCtrlH ) === settingDefaults .backspaceAsCtrlH
74+ && (keyboardLayout .value || settingDefaults .keyboardLayout ) === settingDefaults .keyboardLayout
75+ && isSameArray (rdpClientOption .value , settingDefaults .rdpClientOption )
76+ && (rdpColorQuality .value || settingDefaults .rdpColorQuality ) === settingDefaults .rdpColorQuality
77+ && (rdpSmartSize .value || settingDefaults .rdpSmartSize ) === settingDefaults .rdpSmartSize
78+ );
79+ };
80+
4981watch (
5082 () => loggedIn .value ,
5183 async (nv : boolean ) => {
@@ -165,6 +197,8 @@ const listenTauriEvent = async () => {
165197
166198 userInfoStore .setRdpClientOption (settingConfig .graphics );
167199
200+ if (! isUsingLocalDefaults ()) return ;
201+
168202 setCharsetPreference ((settingConfig .command_line ?.charset as CharsetType ) || " default" );
169203 setBackspacePreference (!! settingConfig .command_line ?.is_backspace_as_ctrl_h );
170204 setRdpResolutionPreference ((settingConfig .graphics ?.rdp_resolution as ResolutionType ) || " auto" );
0 commit comments