Skip to content

Commit 76ec9e3

Browse files
committed
refactor ActionItem
1 parent 1e238e7 commit 76ec9e3

File tree

4 files changed

+19
-21
lines changed

4 files changed

+19
-21
lines changed

web/src/lib/managers/event-manager.svelte.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import type {
88
SharedLinkResponseDto,
99
SystemConfigDto,
1010
UserAdminResponseDto,
11+
WorkflowResponseDto,
1112
} from '@immich/sdk';
1213

1314
export type Events = {
@@ -42,6 +43,9 @@ export type Events = {
4243
LibraryUpdate: [LibraryResponseDto];
4344
LibraryDelete: [{ id: string }];
4445

46+
WorkflowUpdate: [WorkflowResponseDto];
47+
WorkflowDelete: [WorkflowResponseDto];
48+
4549
ReleaseEvent: [ReleaseEvent];
4650
};
4751

web/src/lib/services/workflow.service.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { goto } from '$app/navigation';
22
import { AppRoute } from '$lib/constants';
3+
import { eventManager } from '$lib/managers/event-manager.svelte';
34
import { handleError } from '$lib/utils/handle-error';
45
import { getFormatter } from '$lib/utils/i18n';
56
import {
@@ -377,6 +378,7 @@ export const handleToggleWorkflowEnabled = async (
377378
workflowUpdateDto: { enabled: !workflow.enabled },
378379
});
379380

381+
eventManager.emit('WorkflowUpdate', updated);
380382
toastManager.success($t('workflow_updated'));
381383
return updated;
382384
} catch (error) {
@@ -398,6 +400,7 @@ export const handleDeleteWorkflow = async (workflow: WorkflowResponseDto): Promi
398400

399401
try {
400402
await deleteWorkflow({ id: workflow.id });
403+
eventManager.emit('WorkflowDelete', workflow);
401404
toastManager.success($t('workflow_deleted'));
402405
return true;
403406
} catch (error) {

web/src/routes/(user)/utilities/workflows/+page.svelte

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
<script lang="ts">
22
import emptyWorkflows from '$lib/assets/empty-workflows.svg';
33
import UserPageLayout from '$lib/components/layouts/user-page-layout.svelte';
4+
import OnEvents from '$lib/components/OnEvents.svelte';
45
import EmptyPlaceholder from '$lib/components/shared-components/empty-placeholder.svelte';
56
import {
67
getWorkflowActions,
78
getWorkflowShowSchemaAction,
89
handleCreateWorkflow,
9-
handleDeleteWorkflow,
10-
handleToggleWorkflowEnabled,
1110
type WorkflowPayload,
1211
} from '$lib/services/workflow.service';
1312
import type { PluginFilterResponseDto, WorkflowResponseDto } from '@immich/sdk';
@@ -91,18 +90,14 @@
9190
9291
const getJson = (workflow: WorkflowResponseDto) => JSON.stringify(constructPayload(workflow), null, 2);
9392
94-
const onToggleEnabled = async (workflow: WorkflowResponseDto) => {
95-
const updated = await handleToggleWorkflowEnabled(workflow);
96-
if (updated) {
97-
workflows = workflows.map((w) => (w.id === updated.id ? updated : w));
98-
}
93+
const onWorkflowUpdate = (updatedWorkflow: WorkflowResponseDto) => {
94+
workflows = workflows.map((currentWorkflow) =>
95+
currentWorkflow.id === updatedWorkflow.id ? updatedWorkflow : currentWorkflow,
96+
);
9997
};
10098
101-
const onDeleteWorkflow = async (workflow: WorkflowResponseDto) => {
102-
const deleted = await handleDeleteWorkflow(workflow);
103-
if (deleted) {
104-
workflows = workflows.filter((w) => w.id !== workflow.id);
105-
}
99+
const onWorkflowDelete = (deletedWorkflow: WorkflowResponseDto) => {
100+
workflows = workflows.filter((currentWorkflow) => currentWorkflow.id !== deletedWorkflow.id);
106101
};
107102
108103
const getFilterLabel = (filterId: string) => {
@@ -135,22 +130,18 @@
135130
target: event.currentTarget as HTMLElement,
136131
position: 'top-left',
137132
items: [
138-
{
139-
...ToggleEnabled,
140-
onAction: () => void onToggleEnabled(workflow),
141-
},
133+
ToggleEnabled,
142134
Edit,
143135
getWorkflowShowSchemaAction($t, expandedWorkflows.has(workflow.id), () => toggleShowingSchema(workflow.id)),
144136
MenuItemType.Divider,
145-
{
146-
...Delete,
147-
onAction: () => void onDeleteWorkflow(workflow),
148-
},
137+
Delete,
149138
],
150139
});
151140
};
152141
</script>
153142

143+
<OnEvents {onWorkflowUpdate} {onWorkflowDelete} />
144+
154145
{#snippet chipItem(title: string)}
155146
<span class="rounded-xl border border-gray-200/80 px-3 py-1.5 text-sm dark:border-gray-600 bg-light">
156147
<span class="font-medium text-dark">{title}</span>

web/src/routes/(user)/utilities/workflows/[workflowId]/+page.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -533,7 +533,7 @@
533533
isDragging: draggedActionIndex === index,
534534
isDragOver: dragOverActionIndex === index,
535535
})}
536-
class="mb-4 cursor-move rounded-2xl border-2 p-4 transition-all bg-light-100 border-dashed hover:border-light-300"
536+
class="mb-4 cursor-move rounded-2xl border-2 p-4 transition-all bg-light-50 border-dashed hover:border-light-300"
537537
>
538538
<div class="flex items-start gap-4">
539539
{@render cardOrder(index)}

0 commit comments

Comments
 (0)