@wix/bex-core 2.291.0 → 2.293.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/assets/locale/messages_ar.json +497 -3
- package/dist/cjs/assets/locale/messages_bg.json +497 -3
- package/dist/cjs/assets/locale/messages_ca.json +497 -3
- package/dist/cjs/assets/locale/messages_cs.json +25 -0
- package/dist/cjs/assets/locale/messages_da.json +25 -0
- package/dist/cjs/assets/locale/messages_de.json +25 -0
- package/dist/cjs/assets/locale/messages_el.json +497 -3
- package/dist/cjs/assets/locale/messages_en.json +635 -618
- package/dist/cjs/assets/locale/messages_es.json +25 -0
- package/dist/cjs/assets/locale/messages_fi.json +497 -3
- package/dist/cjs/assets/locale/messages_fr.json +25 -0
- package/dist/cjs/assets/locale/messages_he.json +497 -3
- package/dist/cjs/assets/locale/messages_hi.json +25 -0
- package/dist/cjs/assets/locale/messages_hu.json +497 -3
- package/dist/cjs/assets/locale/messages_id.json +25 -0
- package/dist/cjs/assets/locale/messages_it.json +25 -0
- package/dist/cjs/assets/locale/messages_ja.json +25 -0
- package/dist/cjs/assets/locale/messages_ko.json +25 -0
- package/dist/cjs/assets/locale/messages_lt.json +497 -3
- package/dist/cjs/assets/locale/messages_ms.json +497 -3
- package/dist/cjs/assets/locale/messages_nl.json +25 -0
- package/dist/cjs/assets/locale/messages_no.json +25 -0
- package/dist/cjs/assets/locale/messages_pl.json +25 -0
- package/dist/cjs/assets/locale/messages_pt.json +25 -0
- package/dist/cjs/assets/locale/messages_ro.json +497 -3
- package/dist/cjs/assets/locale/messages_ru.json +25 -0
- package/dist/cjs/assets/locale/messages_sk.json +497 -3
- package/dist/cjs/assets/locale/messages_sl.json +497 -3
- package/dist/cjs/assets/locale/messages_sv.json +25 -0
- package/dist/cjs/assets/locale/messages_th.json +25 -0
- package/dist/cjs/assets/locale/messages_tl.json +497 -3
- package/dist/cjs/assets/locale/messages_tr.json +25 -0
- package/dist/cjs/assets/locale/messages_uk.json +25 -0
- package/dist/cjs/assets/locale/messages_vi.json +25 -0
- package/dist/cjs/assets/locale/messages_zh.json +25 -0
- package/dist/cjs/assets/locale/version_file +1 -0
- package/dist/cjs/services/fetchTranslations.js +4 -1
- package/dist/cjs/services/fetchTranslations.js.map +1 -1
- package/dist/cjs/services/translations.js.map +1 -1
- package/dist/cjs/services/translationsImportsMap.js +0 -2
- package/dist/cjs/services/translationsImportsMap.js.map +1 -1
- package/dist/cjs/state/CollectionState.js.map +1 -1
- package/dist/cjs/state/DataExtensionState.js +4 -2
- package/dist/cjs/state/DataExtensionState.js.map +1 -1
- package/dist/cjs/state/TagsState/TagsManagementState.js.map +1 -1
- package/dist/cjs/state/optimistic-simulation/mergePatchedItems.js +7 -1
- package/dist/cjs/state/optimistic-simulation/mergePatchedItems.js.map +1 -1
- package/dist/esm/assets/locale/messages_ar.json +496 -2
- package/dist/esm/assets/locale/messages_bg.json +496 -2
- package/dist/esm/assets/locale/messages_ca.json +496 -2
- package/dist/esm/assets/locale/messages_cs.json +25 -0
- package/dist/esm/assets/locale/messages_da.json +25 -0
- package/dist/esm/assets/locale/messages_de.json +25 -0
- package/dist/esm/assets/locale/messages_el.json +496 -2
- package/dist/esm/assets/locale/messages_en.json +635 -618
- package/dist/esm/assets/locale/messages_es.json +25 -0
- package/dist/esm/assets/locale/messages_fi.json +496 -2
- package/dist/esm/assets/locale/messages_fr.json +25 -0
- package/dist/esm/assets/locale/messages_he.json +496 -2
- package/dist/esm/assets/locale/messages_hi.json +25 -0
- package/dist/esm/assets/locale/messages_hu.json +496 -2
- package/dist/esm/assets/locale/messages_id.json +25 -0
- package/dist/esm/assets/locale/messages_it.json +25 -0
- package/dist/esm/assets/locale/messages_ja.json +25 -0
- package/dist/esm/assets/locale/messages_ko.json +25 -0
- package/dist/esm/assets/locale/messages_lt.json +496 -2
- package/dist/esm/assets/locale/messages_ms.json +496 -2
- package/dist/esm/assets/locale/messages_nl.json +25 -0
- package/dist/esm/assets/locale/messages_no.json +25 -0
- package/dist/esm/assets/locale/messages_pl.json +25 -0
- package/dist/esm/assets/locale/messages_pt.json +25 -0
- package/dist/esm/assets/locale/messages_ro.json +496 -2
- package/dist/esm/assets/locale/messages_ru.json +25 -0
- package/dist/esm/assets/locale/messages_sk.json +496 -2
- package/dist/esm/assets/locale/messages_sl.json +496 -2
- package/dist/esm/assets/locale/messages_sv.json +25 -0
- package/dist/esm/assets/locale/messages_th.json +25 -0
- package/dist/esm/assets/locale/messages_tl.json +496 -2
- package/dist/esm/assets/locale/messages_tr.json +25 -0
- package/dist/esm/assets/locale/messages_uk.json +25 -0
- package/dist/esm/assets/locale/messages_vi.json +25 -0
- package/dist/esm/assets/locale/messages_zh.json +25 -0
- package/dist/esm/assets/locale/version_file +1 -0
- package/dist/esm/services/fetchTranslations.js +4 -1
- package/dist/esm/services/fetchTranslations.js.map +1 -1
- package/dist/esm/services/translationsImportsMap.js +0 -4
- package/dist/esm/services/translationsImportsMap.js.map +1 -1
- package/dist/esm/state/CollectionState.js.map +1 -1
- package/dist/esm/state/DataExtensionState.js +3 -1
- package/dist/esm/state/DataExtensionState.js.map +1 -1
- package/dist/esm/state/TagsState/TagsManagementState.js.map +1 -1
- package/dist/esm/state/optimistic-simulation/mergePatchedItems.js +7 -1
- package/dist/esm/state/optimistic-simulation/mergePatchedItems.js.map +1 -1
- package/dist/types/services/fetchTranslations.d.ts.map +1 -1
- package/dist/types/services/translations.d.ts +145 -142
- package/dist/types/services/translations.d.ts.map +1 -1
- package/dist/types/services/translationsImportsMap.d.ts +0 -2
- package/dist/types/services/translationsImportsMap.d.ts.map +1 -1
- package/dist/types/state/CollectionState.d.ts +1 -0
- package/dist/types/state/CollectionState.d.ts.map +1 -1
- package/dist/types/state/DataExtensionState.d.ts.map +1 -1
- package/dist/types/state/TagsState/TagsManagementState.d.ts.map +1 -1
- package/dist/types/state/optimistic-simulation/mergePatchedItems.d.ts.map +1 -1
- package/package.json +4 -3
- /package/dist/cjs/assets/{locale → visual-e2e-locale}/messages_visuale2e.json +0 -0
- /package/dist/cjs/assets/{locale → visual-e2e-locale}/messages_visuale2e_ja.json +0 -0
- /package/dist/esm/assets/{locale → visual-e2e-locale}/messages_visuale2e.json +0 -0
- /package/dist/esm/assets/{locale → visual-e2e-locale}/messages_visuale2e_ja.json +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_mobx","require","_types","_uuid","_events","_CollectionState","_CollectionOptimisticActions","_TaskState","_util","_services","_createTagErrors","_tagsService","TAG_MAX_LENGTH","exports","MAX_TAGS","TagsManagementState","constructor","params","_defineProperty2","default","TaskState","EventEmitter","container","fqdn","tagsService","TagsService","collection","CollectionState","events","onError","error","_this$container$error","_this$container$error2","_resolvedListTagsError","errorHandler","getResolvedError","call","err","queryName","fqdnString","join","fetchData","fetchedItems","listTags","exposure","TagExposure","PRIVATE","serverErrorOverride","message","translate","action","text","onClick","retry","items","total","length","itemKey","id","itemName","name","filters","showToast","toastConfig","_params$container","overrideShowToast","emit","remove","optimisticActions","CollectionOptimisticActions","orderBy","sort","fieldName","createdDate","Date","valueOf","order","makeObservable","init","createTag","updateTag","deleteTag","_isFqdnValid","disposers","initTask","runOnce","status","promise","forEach","disposer","result","isError","isLoading","isIdle","isSuccessful","isSuccess","fqdnToString","getTagById","tagId","_this$collection$resu","_keyedItemsMap","get","item","getTagNameById","_this$getTagById","resource","undefined","_optimisticActionBaseParams","optimisticActionParams","tagsBIReporter","actionName","origin","tagName","filteredListSize","isFromSearch","errorCode","onTryAgain","onUndo","otherOptimisticActionParams","internalMonitor","reportError","WixPatternsError","originalException","category","hasReachedTagsLimit","showTagsLimitErrorToast","visualType","excessCount","Math","max","getTagsReachedLimitErrorMessage","limit","biName","type","tagSubOrigin","uuid","onSuccess","onAction","newTag","createOne","submit","serverCreatedTag","tag","createTagErrors","retryFn","tagToUpdate","previousName","updateOne","revision","toString","tagToDelete","deleteOne"],"sources":["../../../../src/state/TagsState/TagsManagementState.ts"],"sourcesContent":["import { action, makeObservable } from 'mobx';\nimport {\n Tag,\n TagExposure,\n} from '@wix/bex-utils/@wix/ambassador-os-tags-v1-tag/types';\nimport { TagsBIReporter } from './TagsBIReporter';\nimport { v4 as uuid } from 'uuid';\nimport { EventEmitter } from 'events';\nimport { WixPatternsContainer } from '../WixPatternsContainer';\nimport { Fqdn, ToastConfig } from '../../model';\nimport { CollectionState } from '../CollectionState';\nimport { CollectionOptimisticActions } from '../CollectionOptimisticActions';\nimport { TaskState } from '../TaskState';\nimport { fqdnToString, TagErrorVisualType, TypedEmitter } from '../../util';\nimport { WixPatternsError, WixPatternsErrorCode } from '../../services';\nimport {\n CreateManyParams,\n DeleteManyParams,\n OptimisticActionBasis,\n UpdateManyParams,\n} from '../OptimisticActions';\nimport {\n createTagErrors,\n getTagsReachedLimitErrorMessage,\n} from '../../services/tagsService/createTagErrors';\nimport { TagsService } from '../../services/tagsService';\nimport type { errorHandler } from '@wix/essentials';\n\nexport const TAG_MAX_LENGTH = 30;\nconst MAX_TAGS = 100;\n\nexport interface TagsManagementStateParams {\n readonly container: WixPatternsContainer;\n readonly fqdn: Fqdn;\n}\n\nexport class TagsManagementState {\n readonly collection: CollectionState<Tag>;\n readonly optimisticActions: CollectionOptimisticActions<Tag, {}>;\n readonly container;\n readonly fqdn;\n readonly initTask = new TaskState();\n readonly tagsService;\n readonly events = new EventEmitter() as TypedEmitter<{\n showToast: (toastConfig: ToastConfig) => unknown;\n hideToast: (toastConfig: ToastConfig) => unknown;\n }>;\n overrideShowToast = false;\n _resolvedListTagsError?: errorHandler.ResolvedError;\n\n constructor(params: TagsManagementStateParams) {\n this.container = params.container;\n this.fqdn = params.fqdn;\n this.tagsService = new TagsService({\n container: this.container,\n });\n\n this.collection = new CollectionState<Tag>({\n ...params.container,\n events: {\n onError: (error) => {\n this._resolvedListTagsError =\n this.container.errorHandler.getResolvedError?.(error.err);\n },\n },\n queryName: [this.fqdnString, 'tags'].join('/'),\n fetchData: async () => {\n const fetchedItems = await this.tagsService.listTags(\n {\n fqdn: this.fqdnString,\n exposure: TagExposure.PRIVATE,\n },\n {},\n {\n serverErrorOverride: () => ({\n message: this.container.translate(\n 'cairo.tags.collectionPage.popover.loadTags.error.body',\n ),\n action: {\n text: this.container.translate('cairo.tags.loadTags.error.CTA'),\n onClick: () => this.retry(),\n },\n }),\n },\n );\n\n return {\n items: fetchedItems,\n total: fetchedItems.length,\n };\n },\n itemKey: ({ id }) => id!,\n itemName: ({ name }) => name!,\n filters: {},\n showToast: (toastConfig: ToastConfig) => {\n if (this.overrideShowToast) {\n this.events.emit('showToast', toastConfig);\n return {\n remove: () => {\n this.events.emit('hideToast', toastConfig);\n },\n };\n }\n if (params?.container?.showToast) {\n return params.container.showToast(toastConfig);\n }\n return { remove: () => {} };\n },\n });\n\n this.optimisticActions = new CollectionOptimisticActions<Tag, {}>({\n container: this.container,\n collection: this.collection,\n orderBy: ({ sort }) => [\n ...(sort || []),\n {\n fieldName: ({ createdDate }) => (createdDate ?? new Date()).valueOf(),\n order: 'asc',\n },\n ],\n });\n\n makeObservable(this, {\n init: action,\n createTag: action,\n updateTag: action,\n deleteTag: action,\n retry: action,\n });\n }\n\n init() {\n if (!this._isFqdnValid()) {\n return;\n }\n\n const { collection, optimisticActions } = this;\n\n const disposers = [collection.init(), optimisticActions.init()];\n\n this.initTask.runOnce(async () => {\n collection.initTask.runOnce();\n\n await collection.initTask.status.promise;\n });\n\n return () => {\n disposers.forEach((disposer) => disposer());\n };\n }\n\n retry() {\n this.collection.initTask.runOnce();\n }\n\n get items() {\n return this.collection.result.items;\n }\n\n get isError() {\n return this.initTask.status.isError;\n }\n\n get error() {\n return this._resolvedListTagsError;\n }\n\n get isLoading() {\n const { status } = this.collection.initTask;\n return status.isIdle || status.isLoading;\n }\n\n get isSuccessful() {\n const { status } = this.collection.initTask;\n return status.isSuccess;\n }\n\n get fqdnString() {\n return fqdnToString(this.fqdn);\n }\n\n getTagById(tagId: string) {\n return this.collection.result._keyedItemsMap?.get(tagId)?.item;\n }\n\n getTagNameById(tagId: string) {\n return this.getTagById(tagId)?.name;\n }\n\n private _isFqdnValid() {\n return this.fqdn.resource !== undefined;\n }\n\n private _optimisticActionBaseParams<T extends OptimisticActionBasis>(\n optimisticActionParams: T,\n {\n tagsBIReporter,\n actionName,\n origin,\n tagName,\n filteredListSize,\n isFromSearch = false,\n errorCode,\n }: {\n tagsBIReporter: TagsBIReporter;\n actionName: string;\n origin: string;\n tagName: string;\n filteredListSize: number;\n isFromSearch?: boolean;\n errorCode: WixPatternsErrorCode;\n },\n ) {\n const { onError, onTryAgain, onUndo, ...otherOptimisticActionParams } =\n optimisticActionParams;\n\n return {\n onError: (error: unknown) => {\n tagsBIReporter.onError(\n {\n tagName,\n actionName,\n origin,\n },\n error,\n );\n this.container.internalMonitor.reportError({\n error: new WixPatternsError({\n errorCode,\n originalException: error,\n }),\n category: 'Tags',\n });\n\n onError?.(error);\n },\n onTryAgain: () => {\n tagsBIReporter.onTryAgain({\n actionName,\n isFromSearch,\n filteredListSize,\n });\n onTryAgain?.();\n },\n onUndo: () => {\n tagsBIReporter.onUndo({ actionName });\n onUndo?.();\n },\n ...otherOptimisticActionParams,\n };\n }\n\n private hasReachedTagsLimit() {\n return this.collection.result.total >= MAX_TAGS;\n }\n\n private showTagsLimitErrorToast(visualType: TagErrorVisualType) {\n const excessCount = Math.max(1, this.collection.result.total - MAX_TAGS + 1);\n this.collection.showToast({\n message: getTagsReachedLimitErrorMessage({\n visualType,\n translate: this.container.translate,\n excessCount,\n limit: MAX_TAGS,\n }),\n biName: 'cairo-max-tags-error',\n type: 'ERROR',\n });\n }\n\n async createTag(params: {\n name: string;\n origin: string;\n tagSubOrigin?: string;\n filteredListSize: number;\n id?: string;\n isFromSearch?: boolean;\n onSuccess?: (tag: Tag) => void | Promise<void>;\n optimisticActionParams?: Partial<CreateManyParams<Tag>>;\n tagsBIReporter: TagsBIReporter;\n visualType?: TagErrorVisualType;\n }) {\n const {\n name,\n origin,\n tagSubOrigin,\n filteredListSize,\n id = uuid(),\n isFromSearch = false,\n onSuccess,\n optimisticActionParams = {},\n tagsBIReporter,\n visualType = 'toast',\n } = params;\n\n const actionName = 'Add tag';\n\n tagsBIReporter.onAction({\n tagName: name,\n isFromSearch,\n actionName,\n origin,\n tagSubOrigin,\n });\n\n if (this.hasReachedTagsLimit()) {\n return this.showTagsLimitErrorToast(visualType);\n }\n\n const newTag = {\n id,\n name,\n fqdn: this.fqdnString,\n exposure: TagExposure.PRIVATE,\n createdDate: new Date(),\n };\n\n this.optimisticActions.createOne(newTag, {\n submit: async () => {\n const serverCreatedTag = await this.tagsService.createTag(\n {\n tag: newTag,\n },\n createTagErrors({\n translate: this.container.translate,\n visualType,\n retryFn: () => this.createTag(params),\n excessCount: Math.max(\n 1,\n this.collection.result.total - MAX_TAGS + 1,\n ),\n limit: MAX_TAGS,\n }),\n );\n\n await onSuccess?.(serverCreatedTag);\n\n return [serverCreatedTag];\n },\n ...this._optimisticActionBaseParams(optimisticActionParams, {\n tagsBIReporter,\n actionName,\n origin,\n filteredListSize,\n tagName: name,\n isFromSearch,\n errorCode: 'CreateTagFailed',\n }),\n });\n }\n\n async updateTag({\n tagToUpdate,\n previousName,\n origin,\n tagSubOrigin,\n filteredListSize,\n isFromSearch = false,\n optimisticActionParams = {},\n tagsBIReporter,\n }: {\n tagToUpdate: Tag;\n previousName: string;\n origin: string;\n tagSubOrigin?: string;\n filteredListSize: number;\n isFromSearch?: boolean;\n optimisticActionParams?: Partial<UpdateManyParams<Tag, {}>>;\n tagsBIReporter: TagsBIReporter;\n }) {\n const actionName = 'Rename tag';\n\n tagsBIReporter.onAction({\n actionName,\n previousName,\n tagName: tagToUpdate.name!,\n isFromSearch,\n origin,\n tagSubOrigin,\n });\n\n this.optimisticActions.updateOne(\n { ...tagToUpdate, revision: (+tagToUpdate.revision! + 1).toString() },\n {\n submit: async () => {\n return this.tagsService.updateTag({ tag: tagToUpdate });\n },\n ...this._optimisticActionBaseParams(optimisticActionParams, {\n tagsBIReporter,\n actionName,\n origin,\n filteredListSize,\n tagName: previousName,\n isFromSearch,\n errorCode: 'UpdateTagFailed',\n }),\n },\n );\n }\n\n async deleteTag({\n tagToDelete,\n origin,\n tagSubOrigin,\n filteredListSize,\n isFromSearch = true,\n optimisticActionParams = {},\n tagsBIReporter,\n }: {\n tagToDelete: Tag;\n origin: string;\n tagSubOrigin?: string;\n filteredListSize: number;\n isFromSearch?: boolean;\n optimisticActionParams?: Partial<DeleteManyParams<Tag, {}>>;\n tagsBIReporter: TagsBIReporter;\n }) {\n const tagName = tagToDelete.name!;\n const actionName = 'Delete tag';\n\n tagsBIReporter.onAction({\n actionName,\n tagName,\n isFromSearch,\n origin,\n tagSubOrigin,\n });\n\n await this.optimisticActions.deleteOne(tagToDelete, {\n submit: async () => {\n return this.tagsService.deleteTag({ tagId: tagToDelete.id! });\n },\n ...this._optimisticActionBaseParams(optimisticActionParams, {\n tagsBIReporter,\n actionName,\n origin,\n tagName,\n filteredListSize,\n isFromSearch,\n errorCode: 'RemoveTagFailed',\n }),\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_mobx","require","_types","_uuid","_events","_CollectionState","_CollectionOptimisticActions","_TaskState","_util","_services","_createTagErrors","_tagsService","TAG_MAX_LENGTH","exports","MAX_TAGS","TagsManagementState","constructor","params","_defineProperty2","default","TaskState","EventEmitter","container","fqdn","tagsService","TagsService","collection","CollectionState","events","onError","error","_this$container$error","_this$container$error2","_resolvedListTagsError","errorHandler","getResolvedError","call","err","queryName","fqdnString","join","fetchData","fetchedItems","listTags","exposure","TagExposure","PRIVATE","serverErrorOverride","message","translate","action","text","onClick","retry","items","total","length","itemKey","id","itemName","name","filters","showToast","toastConfig","_params$container","overrideShowToast","emit","remove","optimisticActions","CollectionOptimisticActions","orderBy","sort","fieldName","createdDate","Date","valueOf","order","makeObservable","init","createTag","updateTag","deleteTag","_isFqdnValid","disposers","initTask","runOnce","status","promise","forEach","disposer","result","isError","isLoading","isIdle","isSuccessful","isSuccess","fqdnToString","getTagById","tagId","_this$collection$resu","_keyedItemsMap","get","item","getTagNameById","_this$getTagById","resource","undefined","_optimisticActionBaseParams","optimisticActionParams","tagsBIReporter","actionName","origin","tagName","filteredListSize","isFromSearch","errorCode","onTryAgain","onUndo","otherOptimisticActionParams","internalMonitor","reportError","WixPatternsError","originalException","category","hasReachedTagsLimit","showTagsLimitErrorToast","visualType","excessCount","Math","max","getTagsReachedLimitErrorMessage","limit","biName","type","tagSubOrigin","uuid","onSuccess","onAction","newTag","createOne","submit","serverCreatedTag","tag","createTagErrors","retryFn","tagToUpdate","previousName","updateOne","revision","toString","tagToDelete","deleteOne"],"sources":["../../../../src/state/TagsState/TagsManagementState.ts"],"sourcesContent":["import { action, makeObservable } from 'mobx';\nimport {\n Tag,\n TagExposure,\n} from '@wix/bex-utils/@wix/ambassador-os-tags-v1-tag/types';\nimport { TagsBIReporter } from './TagsBIReporter';\nimport { v4 as uuid } from 'uuid';\nimport { EventEmitter } from 'events';\nimport { WixPatternsContainer } from '../WixPatternsContainer';\nimport { Fqdn, ToastConfig } from '../../model';\nimport { CollectionState } from '../CollectionState';\nimport { CollectionOptimisticActions } from '../CollectionOptimisticActions';\nimport { TaskState } from '../TaskState';\nimport { fqdnToString, TagErrorVisualType, TypedEmitter } from '../../util';\nimport { WixPatternsError, WixPatternsErrorCode } from '../../services';\nimport {\n CreateManyParams,\n DeleteManyParams,\n OptimisticActionBasis,\n UpdateManyParams,\n} from '../OptimisticActions';\nimport {\n createTagErrors,\n getTagsReachedLimitErrorMessage,\n} from '../../services/tagsService/createTagErrors';\nimport { TagsService } from '../../services/tagsService';\nimport type { errorHandler } from '@wix/essentials';\n\nexport const TAG_MAX_LENGTH = 30;\nconst MAX_TAGS = 100;\n\nexport interface TagsManagementStateParams {\n readonly container: WixPatternsContainer;\n readonly fqdn: Fqdn;\n}\n\nexport class TagsManagementState {\n readonly collection: CollectionState<Tag>;\n readonly optimisticActions: CollectionOptimisticActions<Tag, {}>;\n readonly container;\n readonly fqdn;\n readonly initTask = new TaskState();\n readonly tagsService;\n readonly events = new EventEmitter() as TypedEmitter<{\n showToast: (toastConfig: ToastConfig) => unknown;\n hideToast: (toastConfig: ToastConfig) => unknown;\n }>;\n overrideShowToast = false;\n _resolvedListTagsError?: errorHandler.ResolvedError;\n\n constructor(params: TagsManagementStateParams) {\n this.container = params.container;\n this.fqdn = params.fqdn;\n this.tagsService = new TagsService({\n container: this.container,\n });\n\n this.collection = new CollectionState<Tag>({\n ...params.container,\n events: {\n onError: (error) => {\n this._resolvedListTagsError =\n this.container.errorHandler.getResolvedError?.(error.err);\n },\n },\n queryName: [this.fqdnString, 'tags'].join('/'),\n fetchData: async () => {\n const fetchedItems = await this.tagsService.listTags(\n {\n fqdn: this.fqdnString,\n exposure: TagExposure.PRIVATE,\n },\n {},\n {\n serverErrorOverride: () => ({\n message: this.container.translate(\n 'cairo.tags.collectionPage.popover.loadTags.error.body',\n ),\n action: {\n text: this.container.translate('cairo.tags.loadTags.error.CTA'),\n onClick: () => this.retry(),\n },\n }),\n },\n );\n\n return {\n items: fetchedItems,\n total: fetchedItems.length,\n };\n },\n itemKey: ({ id }) => id!,\n itemName: ({ name }) => name!,\n filters: {},\n showToast: (toastConfig: ToastConfig) => {\n if (this.overrideShowToast) {\n this.events.emit('showToast', toastConfig);\n return {\n remove: () => {\n this.events.emit('hideToast', toastConfig);\n },\n };\n }\n if (params?.container?.showToast) {\n return params.container.showToast(toastConfig);\n }\n return { remove: () => {} };\n },\n });\n\n this.optimisticActions = new CollectionOptimisticActions<Tag, {}>({\n container: this.container,\n collection: this.collection,\n orderBy: ({ sort }) => [\n ...(sort || []),\n {\n fieldName: ({ createdDate }) => (createdDate ?? new Date()).valueOf(),\n order: 'asc',\n },\n ],\n });\n\n makeObservable(this, {\n init: action,\n createTag: action,\n updateTag: action,\n deleteTag: action,\n retry: action,\n });\n }\n\n init() {\n if (!this._isFqdnValid()) {\n return;\n }\n\n const { collection, optimisticActions } = this;\n\n const disposers = [collection.init(), optimisticActions.init()];\n\n this.initTask.runOnce(async () => {\n collection.initTask.runOnce();\n\n await collection.initTask.status.promise;\n });\n\n return () => {\n disposers.forEach((disposer) => disposer());\n };\n }\n\n retry() {\n this.collection.initTask.runOnce();\n }\n\n get items() {\n return this.collection.result.items;\n }\n\n get isError() {\n return this.initTask.status.isError;\n }\n\n get error() {\n return this._resolvedListTagsError;\n }\n\n get isLoading() {\n const { status } = this.collection.initTask;\n return status.isIdle || status.isLoading;\n }\n\n get isSuccessful() {\n const { status } = this.collection.initTask;\n return status.isSuccess;\n }\n\n get fqdnString() {\n return fqdnToString(this.fqdn);\n }\n\n getTagById(tagId: string) {\n return this.collection.result._keyedItemsMap?.get(tagId)?.item;\n }\n\n getTagNameById(tagId: string) {\n return this.getTagById(tagId)?.name;\n }\n\n private _isFqdnValid() {\n return this.fqdn.resource !== undefined;\n }\n\n private _optimisticActionBaseParams<T extends OptimisticActionBasis>(\n optimisticActionParams: T,\n {\n tagsBIReporter,\n actionName,\n origin,\n tagName,\n filteredListSize,\n isFromSearch = false,\n errorCode,\n }: {\n tagsBIReporter: TagsBIReporter;\n actionName: string;\n origin: string;\n tagName: string;\n filteredListSize: number;\n isFromSearch?: boolean;\n errorCode: WixPatternsErrorCode;\n },\n ) {\n const { onError, onTryAgain, onUndo, ...otherOptimisticActionParams } =\n optimisticActionParams;\n\n return {\n onError: (error: unknown) => {\n tagsBIReporter.onError(\n {\n tagName,\n actionName,\n origin,\n },\n error,\n );\n this.container.internalMonitor.reportError({\n error: new WixPatternsError({\n errorCode,\n originalException: error,\n }),\n category: 'Tags',\n });\n\n onError?.(error);\n },\n onTryAgain: () => {\n tagsBIReporter.onTryAgain({\n actionName,\n isFromSearch,\n filteredListSize,\n });\n onTryAgain?.();\n },\n onUndo: () => {\n tagsBIReporter.onUndo({ actionName });\n onUndo?.();\n },\n ...otherOptimisticActionParams,\n };\n }\n\n private hasReachedTagsLimit() {\n return this.collection.result.total >= MAX_TAGS;\n }\n\n private showTagsLimitErrorToast(visualType: TagErrorVisualType) {\n const excessCount = Math.max(\n 1,\n this.collection.result.total - MAX_TAGS + 1,\n );\n this.collection.showToast({\n message: getTagsReachedLimitErrorMessage({\n visualType,\n translate: this.container.translate,\n excessCount,\n limit: MAX_TAGS,\n }),\n biName: 'cairo-max-tags-error',\n type: 'ERROR',\n });\n }\n\n async createTag(params: {\n name: string;\n origin: string;\n tagSubOrigin?: string;\n filteredListSize: number;\n id?: string;\n isFromSearch?: boolean;\n onSuccess?: (tag: Tag) => void | Promise<void>;\n optimisticActionParams?: Partial<CreateManyParams<Tag>>;\n tagsBIReporter: TagsBIReporter;\n visualType?: TagErrorVisualType;\n }) {\n const {\n name,\n origin,\n tagSubOrigin,\n filteredListSize,\n id = uuid(),\n isFromSearch = false,\n onSuccess,\n optimisticActionParams = {},\n tagsBIReporter,\n visualType = 'toast',\n } = params;\n\n const actionName = 'Add tag';\n\n tagsBIReporter.onAction({\n tagName: name,\n isFromSearch,\n actionName,\n origin,\n tagSubOrigin,\n });\n\n if (this.hasReachedTagsLimit()) {\n return this.showTagsLimitErrorToast(visualType);\n }\n\n const newTag = {\n id,\n name,\n fqdn: this.fqdnString,\n exposure: TagExposure.PRIVATE,\n createdDate: new Date(),\n };\n\n this.optimisticActions.createOne(newTag, {\n submit: async () => {\n const serverCreatedTag = await this.tagsService.createTag(\n {\n tag: newTag,\n },\n createTagErrors({\n translate: this.container.translate,\n visualType,\n retryFn: () => this.createTag(params),\n excessCount: Math.max(\n 1,\n this.collection.result.total - MAX_TAGS + 1,\n ),\n limit: MAX_TAGS,\n }),\n );\n\n await onSuccess?.(serverCreatedTag);\n\n return [serverCreatedTag];\n },\n ...this._optimisticActionBaseParams(optimisticActionParams, {\n tagsBIReporter,\n actionName,\n origin,\n filteredListSize,\n tagName: name,\n isFromSearch,\n errorCode: 'CreateTagFailed',\n }),\n });\n }\n\n async updateTag({\n tagToUpdate,\n previousName,\n origin,\n tagSubOrigin,\n filteredListSize,\n isFromSearch = false,\n optimisticActionParams = {},\n tagsBIReporter,\n }: {\n tagToUpdate: Tag;\n previousName: string;\n origin: string;\n tagSubOrigin?: string;\n filteredListSize: number;\n isFromSearch?: boolean;\n optimisticActionParams?: Partial<UpdateManyParams<Tag, {}>>;\n tagsBIReporter: TagsBIReporter;\n }) {\n const actionName = 'Rename tag';\n\n tagsBIReporter.onAction({\n actionName,\n previousName,\n tagName: tagToUpdate.name!,\n isFromSearch,\n origin,\n tagSubOrigin,\n });\n\n this.optimisticActions.updateOne(\n { ...tagToUpdate, revision: (+tagToUpdate.revision! + 1).toString() },\n {\n submit: async () => {\n return this.tagsService.updateTag({ tag: tagToUpdate });\n },\n ...this._optimisticActionBaseParams(optimisticActionParams, {\n tagsBIReporter,\n actionName,\n origin,\n filteredListSize,\n tagName: previousName,\n isFromSearch,\n errorCode: 'UpdateTagFailed',\n }),\n },\n );\n }\n\n async deleteTag({\n tagToDelete,\n origin,\n tagSubOrigin,\n filteredListSize,\n isFromSearch = true,\n optimisticActionParams = {},\n tagsBIReporter,\n }: {\n tagToDelete: Tag;\n origin: string;\n tagSubOrigin?: string;\n filteredListSize: number;\n isFromSearch?: boolean;\n optimisticActionParams?: Partial<DeleteManyParams<Tag, {}>>;\n tagsBIReporter: TagsBIReporter;\n }) {\n const tagName = tagToDelete.name!;\n const actionName = 'Delete tag';\n\n tagsBIReporter.onAction({\n actionName,\n tagName,\n isFromSearch,\n origin,\n tagSubOrigin,\n });\n\n await this.optimisticActions.deleteOne(tagToDelete, {\n submit: async () => {\n return this.tagsService.deleteTag({ tagId: tagToDelete.id! });\n },\n ...this._optimisticActionBaseParams(optimisticActionParams, {\n tagsBIReporter,\n actionName,\n origin,\n tagName,\n filteredListSize,\n isFromSearch,\n errorCode: 'RemoveTagFailed',\n }),\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -85,8 +85,14 @@ function mergePatchedItems(toMerge, {
|
|
|
85
85
|
const [entry] = result.splice(currentIdx, 1);
|
|
86
86
|
const newAnchorIdx = result.findIndex(e => itemKey(e.item) === optimisticPatch.afterItemKey);
|
|
87
87
|
result.splice(newAnchorIdx + 1, 0, entry);
|
|
88
|
+
// Remove from shared maps: 'all' so trimAddedItemsFromPagePredicate
|
|
89
|
+
// won't exclude it at the page boundary; 'created' so later pages
|
|
90
|
+
// won't attempt to reposition it again.
|
|
91
|
+
toMerge.all.delete(key);
|
|
92
|
+
toMerge.created.delete(key);
|
|
88
93
|
} else {
|
|
89
|
-
// Anchor not on this page — remove
|
|
94
|
+
// Anchor not on this page — remove from this page's result but keep
|
|
95
|
+
// in toMerge so the item surfaces on whichever page contains the anchor.
|
|
90
96
|
result.splice(currentIdx, 1);
|
|
91
97
|
}
|
|
92
98
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["mergePatchedItems","toMerge","page","itemKey","orders","itemPredicate","itemsToMerge","all","pageWithPatchedItemsMapTmp","Map","key","item","optimisticPatch","Array","from","entries","keepPosition","originalItems","originalItem","get","length","set","pageWithPatchedItemsMap","created","keys","has","delete","toInsert","orderByItem","result","values","afterItemKey","currentIdx","findIndex","e","anchorIdx","entry","splice","newAnchorIdx"],"sources":["../../../../src/state/optimistic-simulation/mergePatchedItems.ts"],"sourcesContent":["import { Order } from '../QueryResultSimulation';\nimport { OptimisticPatch } from '../CollectionOptimisticPatch';\n\nexport function mergePatchedItems<T>(\n toMerge: {\n all: Map<string, { item: T; optimisticPatch: OptimisticPatch<T> }>;\n created: Map<string, { item: T; optimisticPatch: OptimisticPatch<T> }>;\n },\n {\n page,\n itemKey,\n orders,\n itemPredicate,\n }: {\n page: T[];\n limit: number;\n itemKey: (item: T) => string;\n orders: Order<T>[];\n itemPredicate: (item: T) => boolean;\n },\n) {\n const itemsToMerge = toMerge.all;\n\n // merge items into page. replace if already exists in page. order by original if `keepPosition=true`\n const pageWithPatchedItemsMapTmp = new Map<\n string,\n { item: T; orderByItem?: T }\n >();\n\n for (const [key, { item, optimisticPatch }] of Array.from(\n itemsToMerge.entries(),\n )) {\n const { keepPosition, originalItems } = optimisticPatch;\n const originalItem = originalItems.get(key);\n // if `order` is empty (can't simulate ordering) and keepPosition=true and item didn't match current filtering before update\n // skip on pushing the item into the page\n if (\n !orders.length &&\n keepPosition &&\n originalItem != null &&\n itemPredicate(originalItem)\n ) {\n continue;\n }\n\n if (!itemPredicate(item)) {\n continue;\n }\n\n pageWithPatchedItemsMapTmp.set(key, { item });\n }\n\n // place \"type=createMany\" items first\n const pageWithPatchedItemsMap = new Map<\n string,\n { item: T; orderByItem?: T }\n >();\n\n for (const key of toMerge.created.keys()) {\n if (pageWithPatchedItemsMapTmp.has(key)) {\n pageWithPatchedItemsMap.set(key, {\n item: pageWithPatchedItemsMapTmp.get(key)!.item,\n });\n pageWithPatchedItemsMapTmp.delete(key);\n }\n }\n\n for (const [key, { item }] of Array.from(\n pageWithPatchedItemsMapTmp.entries(),\n )) {\n pageWithPatchedItemsMap.set(key, { item });\n }\n\n for (const item of page) {\n const key = itemKey(item);\n const toInsert = itemsToMerge.get(key);\n\n if (toInsert && toInsert.optimisticPatch.keepPosition) {\n pageWithPatchedItemsMap.delete(key);\n pageWithPatchedItemsMap.set(key, {\n item: toInsert.item,\n orderByItem: item,\n });\n } else if (!toInsert) {\n pageWithPatchedItemsMap.set(key, { item });\n }\n }\n\n const result = Array.from(pageWithPatchedItemsMap.values());\n\n // Reposition created items that specify afterItemKey\n for (const [key, { optimisticPatch }] of toMerge.created.entries()) {\n if (optimisticPatch.afterItemKey == null) {\n continue;\n }\n\n const currentIdx = result.findIndex((e) => itemKey(e.item) === key);\n if (currentIdx === -1) {\n continue;\n }\n\n const anchorIdx = result.findIndex(\n (e) => itemKey(e.item) === optimisticPatch.afterItemKey,\n );\n if (anchorIdx !== -1) {\n // Anchor found on this page — reposition after it\n const [entry] = result.splice(currentIdx, 1);\n const newAnchorIdx = result.findIndex(\n (e) => itemKey(e.item) === optimisticPatch.afterItemKey,\n );\n result.splice(newAnchorIdx + 1, 0, entry);\n } else {\n // Anchor not on this page — remove
|
|
1
|
+
{"version":3,"names":["mergePatchedItems","toMerge","page","itemKey","orders","itemPredicate","itemsToMerge","all","pageWithPatchedItemsMapTmp","Map","key","item","optimisticPatch","Array","from","entries","keepPosition","originalItems","originalItem","get","length","set","pageWithPatchedItemsMap","created","keys","has","delete","toInsert","orderByItem","result","values","afterItemKey","currentIdx","findIndex","e","anchorIdx","entry","splice","newAnchorIdx"],"sources":["../../../../src/state/optimistic-simulation/mergePatchedItems.ts"],"sourcesContent":["import { Order } from '../QueryResultSimulation';\nimport { OptimisticPatch } from '../CollectionOptimisticPatch';\n\nexport function mergePatchedItems<T>(\n toMerge: {\n all: Map<string, { item: T; optimisticPatch: OptimisticPatch<T> }>;\n created: Map<string, { item: T; optimisticPatch: OptimisticPatch<T> }>;\n },\n {\n page,\n itemKey,\n orders,\n itemPredicate,\n }: {\n page: T[];\n limit: number;\n itemKey: (item: T) => string;\n orders: Order<T>[];\n itemPredicate: (item: T) => boolean;\n },\n) {\n const itemsToMerge = toMerge.all;\n\n // merge items into page. replace if already exists in page. order by original if `keepPosition=true`\n const pageWithPatchedItemsMapTmp = new Map<\n string,\n { item: T; orderByItem?: T }\n >();\n\n for (const [key, { item, optimisticPatch }] of Array.from(\n itemsToMerge.entries(),\n )) {\n const { keepPosition, originalItems } = optimisticPatch;\n const originalItem = originalItems.get(key);\n // if `order` is empty (can't simulate ordering) and keepPosition=true and item didn't match current filtering before update\n // skip on pushing the item into the page\n if (\n !orders.length &&\n keepPosition &&\n originalItem != null &&\n itemPredicate(originalItem)\n ) {\n continue;\n }\n\n if (!itemPredicate(item)) {\n continue;\n }\n\n pageWithPatchedItemsMapTmp.set(key, { item });\n }\n\n // place \"type=createMany\" items first\n const pageWithPatchedItemsMap = new Map<\n string,\n { item: T; orderByItem?: T }\n >();\n\n for (const key of toMerge.created.keys()) {\n if (pageWithPatchedItemsMapTmp.has(key)) {\n pageWithPatchedItemsMap.set(key, {\n item: pageWithPatchedItemsMapTmp.get(key)!.item,\n });\n pageWithPatchedItemsMapTmp.delete(key);\n }\n }\n\n for (const [key, { item }] of Array.from(\n pageWithPatchedItemsMapTmp.entries(),\n )) {\n pageWithPatchedItemsMap.set(key, { item });\n }\n\n for (const item of page) {\n const key = itemKey(item);\n const toInsert = itemsToMerge.get(key);\n\n if (toInsert && toInsert.optimisticPatch.keepPosition) {\n pageWithPatchedItemsMap.delete(key);\n pageWithPatchedItemsMap.set(key, {\n item: toInsert.item,\n orderByItem: item,\n });\n } else if (!toInsert) {\n pageWithPatchedItemsMap.set(key, { item });\n }\n }\n\n const result = Array.from(pageWithPatchedItemsMap.values());\n\n // Reposition created items that specify afterItemKey\n for (const [key, { optimisticPatch }] of toMerge.created.entries()) {\n if (optimisticPatch.afterItemKey == null) {\n continue;\n }\n\n const currentIdx = result.findIndex((e) => itemKey(e.item) === key);\n if (currentIdx === -1) {\n continue;\n }\n\n const anchorIdx = result.findIndex(\n (e) => itemKey(e.item) === optimisticPatch.afterItemKey,\n );\n if (anchorIdx !== -1) {\n // Anchor found on this page — reposition after it\n const [entry] = result.splice(currentIdx, 1);\n const newAnchorIdx = result.findIndex(\n (e) => itemKey(e.item) === optimisticPatch.afterItemKey,\n );\n result.splice(newAnchorIdx + 1, 0, entry);\n // Remove from shared maps: 'all' so trimAddedItemsFromPagePredicate\n // won't exclude it at the page boundary; 'created' so later pages\n // won't attempt to reposition it again.\n toMerge.all.delete(key);\n toMerge.created.delete(key);\n } else {\n // Anchor not on this page — remove from this page's result but keep\n // in toMerge so the item surfaces on whichever page contains the anchor.\n result.splice(currentIdx, 1);\n }\n }\n\n return result;\n}\n"],"mappings":"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","ignoreList":[]}
|