feat(dcrouter): add managed local dcrouter mode with status controls and gateway integration
This commit is contained in:
+59
-1
@@ -54,6 +54,7 @@ export interface IBackupsState {
|
||||
export interface ISettingsState {
|
||||
settings: interfaces.data.ISettings | null;
|
||||
backupPasswordConfigured: boolean;
|
||||
managedDcRouterStatus: interfaces.data.IManagedDcRouterStatus | null;
|
||||
}
|
||||
|
||||
export interface IAppStoreState {
|
||||
@@ -142,6 +143,7 @@ export const settingsStatePart = await appState.getStatePart<ISettingsState>(
|
||||
{
|
||||
settings: null,
|
||||
backupPasswordConfigured: false,
|
||||
managedDcRouterStatus: null,
|
||||
},
|
||||
'soft',
|
||||
);
|
||||
@@ -898,17 +900,21 @@ export const triggerScheduleAction = backupsStatePart.createAction<{ scheduleId:
|
||||
export const fetchSettingsAction = settingsStatePart.createAction(async (statePartArg) => {
|
||||
const context = getActionContext();
|
||||
try {
|
||||
const [settingsResp, passwordResp] = await Promise.all([
|
||||
const [settingsResp, passwordResp, managedDcRouterResp] = await Promise.all([
|
||||
new plugins.domtools.plugins.typedrequest.TypedRequest<
|
||||
interfaces.requests.IReq_GetSettings
|
||||
>('/typedrequest', 'getSettings').fire({ identity: context.identity! }),
|
||||
new plugins.domtools.plugins.typedrequest.TypedRequest<
|
||||
interfaces.requests.IReq_GetBackupPasswordStatus
|
||||
>('/typedrequest', 'getBackupPasswordStatus').fire({ identity: context.identity! }),
|
||||
new plugins.domtools.plugins.typedrequest.TypedRequest<
|
||||
interfaces.requests.IReq_GetManagedDcRouterStatus
|
||||
>('/typedrequest', 'getManagedDcRouterStatus').fire({ identity: context.identity! }),
|
||||
]);
|
||||
return {
|
||||
settings: settingsResp.settings,
|
||||
backupPasswordConfigured: passwordResp.status.isConfigured,
|
||||
managedDcRouterStatus: managedDcRouterResp.status,
|
||||
};
|
||||
} catch (err) {
|
||||
console.error('Failed to fetch settings:', err);
|
||||
@@ -935,6 +941,58 @@ export const updateSettingsAction = settingsStatePart.createAction<{
|
||||
}
|
||||
});
|
||||
|
||||
export const fetchManagedDcRouterStatusAction = settingsStatePart.createAction(async (statePartArg) => {
|
||||
const context = getActionContext();
|
||||
try {
|
||||
const response = await new plugins.domtools.plugins.typedrequest.TypedRequest<
|
||||
interfaces.requests.IReq_GetManagedDcRouterStatus
|
||||
>('/typedrequest', 'getManagedDcRouterStatus').fire({ identity: context.identity! });
|
||||
return { ...statePartArg.getState(), managedDcRouterStatus: response.status };
|
||||
} catch (err) {
|
||||
console.error('Failed to fetch managed dcrouter status:', err);
|
||||
return statePartArg.getState();
|
||||
}
|
||||
});
|
||||
|
||||
export const startManagedDcRouterAction = settingsStatePart.createAction(async (statePartArg) => {
|
||||
const context = getActionContext();
|
||||
try {
|
||||
const response = await new plugins.domtools.plugins.typedrequest.TypedRequest<
|
||||
interfaces.requests.IReq_StartManagedDcRouter
|
||||
>('/typedrequest', 'startManagedDcRouter').fire({ identity: context.identity! });
|
||||
return { ...statePartArg.getState(), managedDcRouterStatus: response.status };
|
||||
} catch (err) {
|
||||
console.error('Failed to start managed dcrouter:', err);
|
||||
return statePartArg.getState();
|
||||
}
|
||||
});
|
||||
|
||||
export const stopManagedDcRouterAction = settingsStatePart.createAction(async (statePartArg) => {
|
||||
const context = getActionContext();
|
||||
try {
|
||||
const response = await new plugins.domtools.plugins.typedrequest.TypedRequest<
|
||||
interfaces.requests.IReq_StopManagedDcRouter
|
||||
>('/typedrequest', 'stopManagedDcRouter').fire({ identity: context.identity! });
|
||||
return { ...statePartArg.getState(), managedDcRouterStatus: response.status };
|
||||
} catch (err) {
|
||||
console.error('Failed to stop managed dcrouter:', err);
|
||||
return statePartArg.getState();
|
||||
}
|
||||
});
|
||||
|
||||
export const restartManagedDcRouterAction = settingsStatePart.createAction(async (statePartArg) => {
|
||||
const context = getActionContext();
|
||||
try {
|
||||
const response = await new plugins.domtools.plugins.typedrequest.TypedRequest<
|
||||
interfaces.requests.IReq_RestartManagedDcRouter
|
||||
>('/typedrequest', 'restartManagedDcRouter').fire({ identity: context.identity! });
|
||||
return { ...statePartArg.getState(), managedDcRouterStatus: response.status };
|
||||
} catch (err) {
|
||||
console.error('Failed to restart managed dcrouter:', err);
|
||||
return statePartArg.getState();
|
||||
}
|
||||
});
|
||||
|
||||
export const setBackupPasswordAction = settingsStatePart.createAction<{ password: string }>(
|
||||
async (statePartArg, dataArg) => {
|
||||
const context = getActionContext();
|
||||
|
||||
Reference in New Issue
Block a user