refactor(reset-app): simplify status management
This commit is contained in:
parent
3bfb015b13
commit
e6d838f3d1
5 changed files with 1966 additions and 10 deletions
1961
pnpm-lock.yaml
generated
1961
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load diff
|
@ -118,6 +118,7 @@ export const AppDetailsContainer: React.FC<IProps> = ({ app, localDomain }) => {
|
|||
onSuccess: (data) => {
|
||||
if (!data.success) {
|
||||
toast.error(data.failure.reason);
|
||||
resetAppDisclosure.close();
|
||||
} else {
|
||||
resetAppDisclosure.close();
|
||||
toast.success(t('apps.app-details.app-reset-success'));
|
||||
|
@ -163,7 +164,7 @@ export const AppDetailsContainer: React.FC<IProps> = ({ app, localDomain }) => {
|
|||
};
|
||||
|
||||
const handleResetSubmit = () => {
|
||||
setCustomStatus('resetting');
|
||||
setCustomStatus('stopping');
|
||||
resetMutation.execute({ id: app.id });
|
||||
resetAppDisclosure.open();
|
||||
};
|
||||
|
@ -203,7 +204,7 @@ export const AppDetailsContainer: React.FC<IProps> = ({ app, localDomain }) => {
|
|||
<StopModal onConfirm={handleStopSubmit} isOpen={stopDisclosure.isOpen} onClose={stopDisclosure.close} info={app.info} />
|
||||
<UninstallModal onConfirm={handleUnistallSubmit} isOpen={uninstallDisclosure.isOpen} onClose={uninstallDisclosure.close} info={app.info} />
|
||||
<UpdateModal onConfirm={handleUpdateSubmit} isOpen={updateDisclosure.isOpen} onClose={updateDisclosure.close} info={app.info} newVersion={newVersion} />
|
||||
<ResetAppModal onConfirm={handleResetSubmit} isOpen={resetAppDisclosure.isOpen} onClose={resetAppDisclosure.close} info={app.info} isLoading={customStatus === 'resetting'} />
|
||||
<ResetAppModal onConfirm={handleResetSubmit} isOpen={resetAppDisclosure.isOpen} onClose={resetAppDisclosure.close} info={app.info} isLoading={resetMutation.status === 'executing'} />
|
||||
<UpdateSettingsModal
|
||||
onSubmit={handleUpdateSettingsSubmit}
|
||||
isOpen={updateSettingsDisclosure.isOpen}
|
||||
|
|
|
@ -18,7 +18,7 @@ interface IProps {
|
|||
initalValues?: { [key: string]: unknown };
|
||||
info: AppInfo;
|
||||
loading?: boolean;
|
||||
onReset: () => void;
|
||||
onReset?: () => void;
|
||||
status?: AppStatus;
|
||||
}
|
||||
|
||||
|
@ -61,7 +61,7 @@ export const InstallForm: React.FC<IProps> = ({ formFields, info, onSubmit, init
|
|||
|
||||
const onClickReset = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
|
||||
e.preventDefault();
|
||||
onReset();
|
||||
if (onReset) onReset();
|
||||
};
|
||||
|
||||
const renderField = (field: FormField) => {
|
||||
|
@ -174,7 +174,7 @@ export const InstallForm: React.FC<IProps> = ({ formFields, info, onSubmit, init
|
|||
<Button loading={loading} type="submit" className="btn-success">
|
||||
{initalValues ? t('submit-update') : t('sumbit-install')}
|
||||
</Button>
|
||||
{initalValues && (
|
||||
{initalValues && onReset && (
|
||||
<Button loading={status === 'resetting'} onClick={onClickReset} className="btn-danger ms-2">
|
||||
{t('reset')}
|
||||
</Button>
|
||||
|
|
|
@ -2,7 +2,7 @@ import { InferModel } from 'drizzle-orm';
|
|||
import { pgTable, pgEnum, integer, varchar, timestamp, serial, boolean, text, jsonb } from 'drizzle-orm/pg-core';
|
||||
|
||||
const updateStatusEnum = pgEnum('update_status_enum', ['SUCCESS', 'FAILED']);
|
||||
const appStatusEnum = pgEnum('app_status_enum', ['running', 'stopped', 'starting', 'stopping', 'updating', 'missing', 'installing', 'uninstalling', 'resetting']);
|
||||
const appStatusEnum = pgEnum('app_status_enum', ['running', 'stopped', 'starting', 'stopping', 'updating', 'missing', 'installing', 'uninstalling']);
|
||||
|
||||
const APP_STATUS = appStatusEnum.enumValues;
|
||||
export type AppStatus = (typeof APP_STATUS)[number];
|
||||
|
|
|
@ -377,7 +377,7 @@ export class AppServiceClass {
|
|||
|
||||
await this.stopApp(id);
|
||||
await this.uninstallApp(id);
|
||||
await this.installApp(id, appInfo.config);
|
||||
await this.installApp(id, castAppConfig(appInfo.config));
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Reference in a new issue