import type { InjectionKey } from 'vue';
|
|
import type { UploadEditContext, UploadEditDraft } from '#/api/onlineDev/uploadEdit';
|
|
export interface UploadEditParticipant {
|
settle?: () => Promise<void>;
|
refresh?: () => Promise<void>;
|
prepare: () => Promise<undefined | { contentToken?: string; metadataToken?: string; draftId: string; revision: number }>;
|
}
|
export interface UploadEditFormContext {
|
context: () => Omit<UploadEditContext, 'field' | 'parentField' | 'rowId'>;
|
register: (participant: UploadEditParticipant) => () => void;
|
loadShared?: (context: UploadEditContext) => Promise<{ data: UploadEditDraft }>;
|
sharedChanged?: () => void;
|
}
|
export const uploadEditFormKey: InjectionKey<UploadEditFormContext> = Symbol('upload-edit-form');
|