refactor(reset-app): simplify status management

This commit is contained in:
Nicolas Meienberger 2023-11-18 10:23:40 +01:00
parent 3bfb015b13
commit e6d838f3d1
5 changed files with 1966 additions and 10 deletions

1961
pnpm-lock.yaml generated

File diff suppressed because it is too large Load diff

View file

@ -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}

View file

@ -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>

View file

@ -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];

View file

@ -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));
};
/**