@zextras/carbonio-ui-commons 2.1.0 → 2.2.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.
@@ -64,6 +64,7 @@ export type BaseFolder = {
64
64
  i4ms?: number;
65
65
  i4next?: number;
66
66
  url?: string;
67
+ lsd?: number;
67
68
  activesyncdisabled: boolean;
68
69
  webOfflineSyncDays?: number;
69
70
  perm?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/folder/index.ts"],"names":[],"mappings":"","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport { ComponentType } from 'react';\n\nimport { WorkerMessage } from '../workers';\n\nexport type FolderFields = {\n\t// Additional Parameters\n\tisLink: boolean;\n\tdepth: number;\n\tparent?: string;\n\tchildren: Array<Folder>;\n};\n\nexport type UserFolder = BaseFolder & FolderFields & { isLink: false };\n\nexport type LinkFolder = BaseFolder & FolderFields & LinkFolderFields & { isLink: true };\n\nexport type SearchFolder = BaseFolder &\n\tPick<FolderFields, 'parent' | 'isLink'> &\n\tSearchFolderFields;\nexport type Folder = UserFolder | LinkFolder;\nexport type RootFolder = Folder & { uuid: undefined };\nexport type Folders = { [id: string]: Folder };\nexport type Searches = { [id: string]: SearchFolder };\nexport type LinksIdMap = { [id: string]: string };\nexport type FolderState = {\n\tfolders: Folders;\n\tlinksIdMap: LinksIdMap;\n\tsearches: Searches;\n\tupdateFolder: (id: string, opt: Partial<Folder>) => void;\n};\n\nexport type FolderView =\n\t| 'search folder'\n\t| 'tag'\n\t| 'conversation'\n\t| 'message'\n\t| 'contact'\n\t| 'document'\n\t| 'appointment'\n\t| 'virtual conversation'\n\t| 'remote folder'\n\t| 'wiki'\n\t| 'task'\n\t| 'chat';\n\n// Grants\nexport type Grant = {\n\t// Rights - Some combination of (r)ead, (w)rite, (i)nsert, (d)elete, (a)dminister, workflow action (x), view (p)rivate, view (f)reebusy, (c)reate subfolder\n\tperm: string;\n\t/* The type of Grantee:\n\t\"usr\",\n\t\"grp\",\n\t\"dom\" (domain),\n\t\"cos\",\n\t\"all\" (all authenticated users),\n\t\"pub\" (public authenticated and unauthenticated access),\n\t\"guest\" (non-Zimbra email address and password),\n\t\"key\" (non-Zimbra email address and access key)\n\t*/\n\tgt: 'usr' | 'grp' | 'dom' | 'cos' | 'all' | 'guest' | 'key' | 'pub';\n\t// Grantee ID\n\tzid?: string;\n\t// Time when this grant expires. For internal/guest grant: If this attribute is not specified, the expiry of the grant is derived from internalGrantExpiry/guestGrantExpiry of the ACL it is part of. If this attribute is specified (overridden), the expiry value can not be greater than the corresponding expiry value in the ACL. For public grant: If this attribute is not specified, defaults to the maximum allowed expiry for a public grant. If not specified in the response, defaults to 0. Value of 0 indicates that this grant never expires.\n\texpiry?: string;\n\t// Name or email address of the principal being granted rights. optional if {grantee-type} is \"all\"/\"guest\"/\"pub\". When specified in a request, this can be just the username portion of the address in the default domain.\n\td?: string;\n\t// Optional argument. password when {grantee-type} is \"guest\"\n\tpw?: string;\n\t// Optional argument. Access key when {grantee-type} is \"key\"\n\tkey?: string;\n};\n\nexport type BaseFolder = {\n\t// Folder ID\n\tid: string;\n\t// Item's UUID - a globally unique identifier\n\tuuid: string;\n\t// Name of folder; max length 128; whitespace is trimmed by server; Cannot contain ':', '\"', '/', or any character below 0x20\n\tname: string;\n\t// Absolute Folder path\n\tabsFolderPath?: string;\n\t// ID of parent folder (absent for root folder)\n\tl?: string;\n\t// UUID of parent folder (absent for root folder)\n\tluuid?: string;\n\t// Flags - checked in UI (#), exclude free/(b)usy info, IMAP subscribed (*), does not (i)nherit rights from parent, is a s(y)nc folder with external data source, sync is turned on(~), folder does n(o)t allow inferiors / children\n\tf?: string;\n\t// color numeric; range 0-127; defaults to 0 if not present; client can display only 0-7\n\tcolor?: number;\n\t// RGB color in format #rrggbb where r,g and b are hex digits\n\trgb?: string;\n\t// Number of unread messages in folder\n\tu?: number;\n\t// Number of unread messages with this tag, including those with the IMAP \\Deleted flag set\n\ti4u?: number;\n\t// (optional) Default type for the folder; used by web client to decide which view to use;\n\tview?: FolderView;\n\t// Revision\n\trev?: number;\n\t// Modified sequence\n\tms?: number;\n\t// Modified date in seconds\n\tmd?: number;\n\t// Number of non-subfolder items in folder\n\tn?: number;\n\t// Number of non-subfolder items in folder, including those with the IMAP \\Deleted flag set\n\ti4n?: number;\n\t// Total size of all of non-subfolder items in folder\n\ts?: number;\n\t// Imap modified sequence\n\ti4ms?: number;\n\t// IMAP UIDNEXT\n\ti4next?: number;\n\t// URL (RSS, iCal, etc.) this folder syncs its contents to\n\turl?: string;\n\tactivesyncdisabled: boolean;\n\t// Number of days for which web client would sync folder data for offline use\n\twebOfflineSyncDays?: number;\n\t// For remote folders, the access rights the authenticated user has on the folder - will contain the calculated (c)reate folder permission if the user has both (i)nsert and (r)ead access on the folder\n\tperm?: string;\n\t// recursive\n\trecursive: boolean;\n\t// URL to the folder in the REST interface for rest-enabled apps (such as notebook)\n\trest?: string;\n\t// whether this folder can be deleted\n\tdeletable: boolean;\n\t// custom metadata\n\tmeta?: Array<any>;\n\t// ACL for sharing\n\tacl?: { grant: Array<Grant> };\n\tretentionPolicy?: any;\n\t// indicates whether this folder is displayed in Calendars\n\tchecked?: boolean;\n};\n\nexport type SoapLink = SoapFolder & LinkFolderFields;\nexport type SoapSearchFolder = SoapFolder & SearchFolderFields;\n\nexport type SoapFolder = BaseFolder & {\n\tfolder?: Array<SoapFolder>;\n\tlink?: Array<SoapLink>;\n\tsearch?: Array<SoapSearchFolder>;\n};\n\nexport type LinkFolderFields = {\n\t// Primary email address of the owner of the linked-to resource\n\towner?: string;\n\t// Zimbra ID (guid) of the owner of the linked-to resource\n\tzid?: string;\n\t// Item ID of the linked-to resource in the remote mailbox\n\trid?: string;\n\t// UUID of the linked-to resource in the remote mailbox\n\truuid?: string;\n\t// The name presently used for the item by the owner\n\toname?: string;\n\t// If set, client should display reminders for shared appointments/tasks\n\treminder: boolean;\n\t// If \"tr\" is true in the request, broken is set if this is a broken link\n\tbroken: boolean;\n};\nexport type SearchFolderFields = {\n\t// Query\n\tquery?: string;\n\t// Sort by\n\tsortBy?: SortBy;\n\t// Comma-separated list. Legal values in list are:\n\t// appointment|chat|contact|conversation|document|message|tag|task|wiki (default is \"conversation\")\n\ttypes?: string;\n};\n\nexport type SortBy =\n\t| 'dateDesc'\n\t| 'dateAsc'\n\t| 'idDesc'\n\t| 'idAsc'\n\t| 'subjDesc'\n\t| 'subjAsc'\n\t| 'nameDesc'\n\t| 'nameAsc'\n\t| 'durDesc'\n\t| 'durAsc'\n\t| 'none'\n\t| 'taskDueAsc'\n\t| 'taskDueDesc'\n\t| 'taskStatusAsc'\n\t| 'taskStatusDesc'\n\t| 'taskPercCompletedAsc'\n\t| 'taskPercCompletedDesc'\n\t| 'rcptAsc'\n\t| 'rcptDesc'\n\t| 'readAsc'\n\t| 'readDesc';\n\nexport type AccordionFolder = {\n\tid: string;\n\tlabel: string;\n\tfolder: Folder;\n\tCustomComponent: ComponentType<{ folder: Folder }>;\n\titems: Array<AccordionFolder>;\n};\n\nexport type TreeNode<T> = T & {\n\tid: string;\n\tchildren: TreeNode<T>[];\n\tparent?: string;\n};\n\nexport type PopulateFoldersStoreOptions = {\n\tview?: FolderView;\n\tnoSharedAccounts?: boolean;\n\tcustomFolders?: Array<Folder>;\n};\n\n/**\n * Message to notify the worker of a folder change\n */\nexport type FolderMessage = WorkerMessage<Record<string, never>>;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/folder/index.ts"],"names":[],"mappings":"","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport { ComponentType } from 'react';\n\nimport { WorkerMessage } from '../workers';\n\nexport type FolderFields = {\n\t// Additional Parameters\n\tisLink: boolean;\n\tdepth: number;\n\tparent?: string;\n\tchildren: Array<Folder>;\n};\n\nexport type UserFolder = BaseFolder & FolderFields & { isLink: false };\n\nexport type LinkFolder = BaseFolder & FolderFields & LinkFolderFields & { isLink: true };\n\nexport type SearchFolder = BaseFolder &\n\tPick<FolderFields, 'parent' | 'isLink'> &\n\tSearchFolderFields;\nexport type Folder = UserFolder | LinkFolder;\nexport type RootFolder = Folder & { uuid: undefined };\nexport type Folders = { [id: string]: Folder };\nexport type Searches = { [id: string]: SearchFolder };\nexport type LinksIdMap = { [id: string]: string };\nexport type FolderState = {\n\tfolders: Folders;\n\tlinksIdMap: LinksIdMap;\n\tsearches: Searches;\n\tupdateFolder: (id: string, opt: Partial<Folder>) => void;\n};\n\nexport type FolderView =\n\t| 'search folder'\n\t| 'tag'\n\t| 'conversation'\n\t| 'message'\n\t| 'contact'\n\t| 'document'\n\t| 'appointment'\n\t| 'virtual conversation'\n\t| 'remote folder'\n\t| 'wiki'\n\t| 'task'\n\t| 'chat';\n\n// Grants\nexport type Grant = {\n\t// Rights - Some combination of (r)ead, (w)rite, (i)nsert, (d)elete, (a)dminister, workflow action (x), view (p)rivate, view (f)reebusy, (c)reate subfolder\n\tperm: string;\n\t/* The type of Grantee:\n\t\"usr\",\n\t\"grp\",\n\t\"dom\" (domain),\n\t\"cos\",\n\t\"all\" (all authenticated users),\n\t\"pub\" (public authenticated and unauthenticated access),\n\t\"guest\" (non-Zimbra email address and password),\n\t\"key\" (non-Zimbra email address and access key)\n\t*/\n\tgt: 'usr' | 'grp' | 'dom' | 'cos' | 'all' | 'guest' | 'key' | 'pub';\n\t// Grantee ID\n\tzid?: string;\n\t// Time when this grant expires. For internal/guest grant: If this attribute is not specified, the expiry of the grant is derived from internalGrantExpiry/guestGrantExpiry of the ACL it is part of. If this attribute is specified (overridden), the expiry value can not be greater than the corresponding expiry value in the ACL. For public grant: If this attribute is not specified, defaults to the maximum allowed expiry for a public grant. If not specified in the response, defaults to 0. Value of 0 indicates that this grant never expires.\n\texpiry?: string;\n\t// Name or email address of the principal being granted rights. optional if {grantee-type} is \"all\"/\"guest\"/\"pub\". When specified in a request, this can be just the username portion of the address in the default domain.\n\td?: string;\n\t// Optional argument. password when {grantee-type} is \"guest\"\n\tpw?: string;\n\t// Optional argument. Access key when {grantee-type} is \"key\"\n\tkey?: string;\n};\n\nexport type BaseFolder = {\n\t// Folder ID\n\tid: string;\n\t// Item's UUID - a globally unique identifier\n\tuuid: string;\n\t// Name of folder; max length 128; whitespace is trimmed by server; Cannot contain ':', '\"', '/', or any character below 0x20\n\tname: string;\n\t// Absolute Folder path\n\tabsFolderPath?: string;\n\t// ID of parent folder (absent for root folder)\n\tl?: string;\n\t// UUID of parent folder (absent for root folder)\n\tluuid?: string;\n\t// Flags - checked in UI (#), exclude free/(b)usy info, IMAP subscribed (*), does not (i)nherit rights from parent, is a s(y)nc folder with external data source, sync is turned on(~), folder does n(o)t allow inferiors / children\n\tf?: string;\n\t// color numeric; range 0-127; defaults to 0 if not present; client can display only 0-7\n\tcolor?: number;\n\t// RGB color in format #rrggbb where r,g and b are hex digits\n\trgb?: string;\n\t// Number of unread messages in folder\n\tu?: number;\n\t// Number of unread messages with this tag, including those with the IMAP \\Deleted flag set\n\ti4u?: number;\n\t// (optional) Default type for the folder; used by web client to decide which view to use;\n\tview?: FolderView;\n\t// Revision\n\trev?: number;\n\t// Modified sequence\n\tms?: number;\n\t// Modified date in seconds\n\tmd?: number;\n\t// Number of non-subfolder items in folder\n\tn?: number;\n\t// Number of non-subfolder items in folder, including those with the IMAP \\Deleted flag set\n\ti4n?: number;\n\t// Total size of all of non-subfolder items in folder\n\ts?: number;\n\t// Imap modified sequence\n\ti4ms?: number;\n\t// IMAP UIDNEXT\n\ti4next?: number;\n\t// URL (RSS, iCal, etc.) this folder syncs its contents to\n\turl?: string;\n\t// Last successful sync date from external URL in epoch seconds\n\tlsd?: number;\n\tactivesyncdisabled: boolean;\n\t// Number of days for which web client would sync folder data for offline use\n\twebOfflineSyncDays?: number;\n\t// For remote folders, the access rights the authenticated user has on the folder - will contain the calculated (c)reate folder permission if the user has both (i)nsert and (r)ead access on the folder\n\tperm?: string;\n\t// recursive\n\trecursive: boolean;\n\t// URL to the folder in the REST interface for rest-enabled apps (such as notebook)\n\trest?: string;\n\t// whether this folder can be deleted\n\tdeletable: boolean;\n\t// custom metadata\n\tmeta?: Array<any>;\n\t// ACL for sharing\n\tacl?: { grant: Array<Grant> };\n\tretentionPolicy?: any;\n\t// indicates whether this folder is displayed in Calendars\n\tchecked?: boolean;\n};\n\nexport type SoapLink = SoapFolder & LinkFolderFields;\nexport type SoapSearchFolder = SoapFolder & SearchFolderFields;\n\nexport type SoapFolder = BaseFolder & {\n\tfolder?: Array<SoapFolder>;\n\tlink?: Array<SoapLink>;\n\tsearch?: Array<SoapSearchFolder>;\n};\n\nexport type LinkFolderFields = {\n\t// Primary email address of the owner of the linked-to resource\n\towner?: string;\n\t// Zimbra ID (guid) of the owner of the linked-to resource\n\tzid?: string;\n\t// Item ID of the linked-to resource in the remote mailbox\n\trid?: string;\n\t// UUID of the linked-to resource in the remote mailbox\n\truuid?: string;\n\t// The name presently used for the item by the owner\n\toname?: string;\n\t// If set, client should display reminders for shared appointments/tasks\n\treminder: boolean;\n\t// If \"tr\" is true in the request, broken is set if this is a broken link\n\tbroken: boolean;\n};\nexport type SearchFolderFields = {\n\t// Query\n\tquery?: string;\n\t// Sort by\n\tsortBy?: SortBy;\n\t// Comma-separated list. Legal values in list are:\n\t// appointment|chat|contact|conversation|document|message|tag|task|wiki (default is \"conversation\")\n\ttypes?: string;\n};\n\nexport type SortBy =\n\t| 'dateDesc'\n\t| 'dateAsc'\n\t| 'idDesc'\n\t| 'idAsc'\n\t| 'subjDesc'\n\t| 'subjAsc'\n\t| 'nameDesc'\n\t| 'nameAsc'\n\t| 'durDesc'\n\t| 'durAsc'\n\t| 'none'\n\t| 'taskDueAsc'\n\t| 'taskDueDesc'\n\t| 'taskStatusAsc'\n\t| 'taskStatusDesc'\n\t| 'taskPercCompletedAsc'\n\t| 'taskPercCompletedDesc'\n\t| 'rcptAsc'\n\t| 'rcptDesc'\n\t| 'readAsc'\n\t| 'readDesc';\n\nexport type AccordionFolder = {\n\tid: string;\n\tlabel: string;\n\tfolder: Folder;\n\tCustomComponent: ComponentType<{ folder: Folder }>;\n\titems: Array<AccordionFolder>;\n};\n\nexport type TreeNode<T> = T & {\n\tid: string;\n\tchildren: TreeNode<T>[];\n\tparent?: string;\n};\n\nexport type PopulateFoldersStoreOptions = {\n\tview?: FolderView;\n\tnoSharedAccounts?: boolean;\n\tcustomFolders?: Array<Folder>;\n};\n\n/**\n * Message to notify the worker of a folder change\n */\nexport type FolderMessage = WorkerMessage<Record<string, never>>;\n"]}
@@ -83,6 +83,7 @@ export const normalize = (f, p) => ({
83
83
  i4ms: f.i4ms,
84
84
  i4next: f.i4next,
85
85
  url: f.url,
86
+ lsd: f.lsd,
86
87
  activesyncdisabled: !!f.activesyncdisabled,
87
88
  webOfflineSyncDays: f.webOfflineSyncDays,
88
89
  perm: f.perm,
@@ -1 +1 @@
1
- {"version":3,"file":"handle-message.js","sourceRoot":"","sources":["../../src/worker/handle-message.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport type { SoapNotify } from '@zextras/carbonio-ui-soap-lib';\n\nimport { getLinkIdMapKey } from './utils';\nimport type {\n\tBaseFolder,\n\tFolder,\n\tFolderMessage,\n\tFolders,\n\tLinkFolder,\n\tLinkFolderFields,\n\tSearches,\n\tSearchFolderFields,\n\tSoapFolder,\n\tSoapLink,\n\tSoapSearchFolder,\n\tUserFolder\n} from '../types';\nimport { FolderView, LinksIdMap } from '../types';\n\nconst IM_LOGS = '14';\nconst USER_ROOT = '1';\n\nlet folders: Folders = {};\nconst searches: Searches = {};\nconst linksIdMap: LinksIdMap = {};\n// used to check if a newly created folder is being added to the correct store\nlet view: string | undefined;\n\nexport const testUtils = {\n\tgetFolders: (): Folders => folders,\n\tresetFolders: (): void => {\n\t\tfolders = {};\n\t},\n\tsetFolders: (data: Folders): void => {\n\t\tfolders = data;\n\t},\n\tsetCurrentView: (current: FolderView): void => {\n\t\tview = current;\n\t},\n\tgetCurrentView: (): string | undefined => view\n};\n\nconst sortFoldersByName = (obj: Array<Folder>): Array<Folder> =>\n\tobj.sort((a, b) => {\n\t\tconst aLowerName = a.name.toLowerCase();\n\t\tconst bLowerName = b.name.toLowerCase();\n\t\tif (aLowerName < bLowerName) {\n\t\t\treturn -1;\n\t\t}\n\t\tif (aLowerName > bLowerName) {\n\t\t\treturn 1;\n\t\t}\n\t\treturn 0;\n\t});\n\nconst updateChildren = (folder: Folder, changes: any): any => {\n\tif (changes.absFolderPath && folder.children.length) {\n\t\tfolder.children.forEach((child) => {\n\t\t\tconst childFolder = folders[child.id];\n\t\t\tif (changes.absFolderPath && childFolder.absFolderPath) {\n\t\t\t\tconst paths = childFolder.absFolderPath.split('/').slice(2);\n\t\t\t\tchildFolder.absFolderPath = `${changes.absFolderPath}/${paths.join('/')}`;\n\t\t\t}\n\t\t\tif (childFolder.children.length) {\n\t\t\t\tupdateChildren(childFolder, changes);\n\t\t\t}\n\t\t});\n\t}\n};\n\nexport const testFolderIsChecked = ({ string }: { string: string | undefined }): boolean =>\n\t/#/.test(string || '');\n\nconst omit = ({\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tlink: _1,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tfolder: _2,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tsearch: _3,\n\t...obj\n}: Partial<SoapFolder>): Partial<SoapFolder> => obj;\n\nexport const hasId = (f: { id: string }, id: string): boolean => f.id.split(':').includes(id);\nexport const normalize = (f: SoapFolder, p?: Folder): BaseFolder => ({\n\tid: f.id,\n\tuuid: f.uuid,\n\tname: f.name,\n\tabsFolderPath: f.absFolderPath,\n\tl: f.l,\n\tluuid: f.luuid,\n\tchecked: testFolderIsChecked({ string: f.f }),\n\tf: f.f,\n\t// the type defined in shell is not correct refs: SHELL-118\n\t// FIXME: remove the cast when the type will be fixed\n\tcolor: (f.color as unknown as number) || p?.color,\n\trgb: f.rgb,\n\tu: f.u,\n\ti4u: f.i4u,\n\tview: f.view,\n\trev: f.rev,\n\tms: f.ms,\n\tmd: f.md,\n\tn: f.n,\n\ti4n: f.i4n,\n\ts: f.s,\n\ti4ms: f.i4ms,\n\ti4next: f.i4next,\n\turl: f.url,\n\tactivesyncdisabled: !!f.activesyncdisabled,\n\twebOfflineSyncDays: f.webOfflineSyncDays,\n\tperm: f.perm,\n\trecursive: !!f.recursive,\n\trest: f.rest,\n\tdeletable: !!f.deletable,\n\tmeta: f.meta,\n\tacl: f.acl,\n\tretentionPolicy: f.retentionPolicy\n});\n\nexport const normalizeSearch = (s: SoapSearchFolder): BaseFolder & SearchFolderFields => ({\n\t...normalize(s),\n\tquery: s.query,\n\tsortBy: s.sortBy,\n\ttypes: s.types\n});\n\nexport const normalizeLink = (l: SoapLink, p?: Folder): BaseFolder & LinkFolderFields => ({\n\t...normalize(l, p),\n\towner: l.owner,\n\tzid: l.zid,\n\trid: l.rid,\n\truuid: l.ruuid,\n\toname: l.oname,\n\treminder: !!l.reminder,\n\tbroken: !!l.broken\n});\n\nexport const processSearch = (soapSearch: SoapSearchFolder, parent: Folder): void => {\n\tconst search = {\n\t\t...normalizeSearch(soapSearch),\n\t\tparent: parent?.id,\n\t\tisLink: parent?.isLink\n\t};\n\tsearches[search.id] = search;\n};\n\nexport const processLink = (soapLink: SoapLink, depth: number, parent?: Folder): LinkFolder => {\n\tconst link = {\n\t\t...normalizeLink(soapLink, parent),\n\t\tisLink: true,\n\t\tchildren: [],\n\t\tparent: parent?.id,\n\t\tdepth\n\t} as LinkFolder;\n\t// eslint-disable-next-line no-param-reassign\n\tfolders[soapLink.id] = link;\n\n\t// Get the zid:rid key of the link and add it to the links id map\n\tconst linkIdMapKey = getLinkIdMapKey(soapLink);\n\tlinkIdMapKey && (linksIdMap[linkIdMapKey] = soapLink.id);\n\n\tsoapLink?.folder?.forEach((f) => {\n\t\tif (!hasId(f, IM_LOGS)) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-use-before-define\n\t\t\tconst child = processFolder(f, depth + 1, link);\n\t\t\tlink.children.push(child);\n\t\t}\n\t});\n\tsoapLink?.link?.forEach((l) => {\n\t\tif (!hasId(l, IM_LOGS)) {\n\t\t\tconst child = processLink(l, depth + 1, link);\n\t\t\tlink.children.push(child);\n\t\t}\n\t});\n\tsoapLink?.search?.forEach((s) => {\n\t\tprocessSearch(s, link);\n\t});\n\n\treturn link;\n};\n\nexport const processFolder = (\n\tsoapFolder: SoapFolder,\n\tdepth: number,\n\tparent?: Folder\n): UserFolder => {\n\tconst folder: UserFolder = {\n\t\t...normalize(soapFolder, parent),\n\t\tisLink: false,\n\t\tchildren: [],\n\t\tparent: parent?.id,\n\t\tdepth\n\t};\n\tfolders[soapFolder.id] = folder;\n\tsoapFolder?.folder?.forEach((f) => {\n\t\tif (!hasId(f, IM_LOGS)) {\n\t\t\tconst child = processFolder(f, depth + 1, folder);\n\t\t\tif (!hasId(f, USER_ROOT)) {\n\t\t\t\tfolder.children.push(child);\n\t\t\t}\n\t\t}\n\t});\n\tsoapFolder?.link?.forEach((l) => {\n\t\tif (!hasId(l, IM_LOGS)) {\n\t\t\tconst child = processLink(l, depth + 1, folder);\n\t\t\tif (!hasId(l, USER_ROOT)) {\n\t\t\t\tfolder.children.push(child);\n\t\t\t}\n\t\t}\n\t});\n\tsoapFolder?.search?.forEach((s) => {\n\t\tprocessSearch(s, folder);\n\t});\n\treturn folder;\n};\n\nexport const handleFolderRefresh = (\n\tsoapFolders: Array<SoapFolder>,\n\tcurrentView: FolderView\n): UserFolder | Array<UserFolder> => {\n\tview = currentView;\n\tif (soapFolders.length > 1) {\n\t\tconst sharedAccounts = soapFolders.slice(1);\n\t\treturn [\n\t\t\tprocessFolder(soapFolders[0], 0),\n\t\t\t...sharedAccounts.map((folder) => processLink(folder as SoapLink, 0))\n\t\t] as Array<UserFolder>;\n\t}\n\treturn processFolder(soapFolders[0], 0);\n};\n\nexport const handleFolderCreated = (created: Array<SoapFolder>): void =>\n\tcreated.forEach((val: SoapFolder) => {\n\t\tif (val.id && val.l && view && val.view === view) {\n\t\t\tconst parent = folders[val.l];\n\t\t\tconst folder: UserFolder = {\n\t\t\t\t...normalize(val, parent),\n\t\t\t\tisLink: false,\n\t\t\t\tchildren: [],\n\t\t\t\tparent: parent?.id,\n\t\t\t\tdepth: parent && parent.depth !== undefined ? parent.depth + 1 : 0\n\t\t\t};\n\t\t\tfolders[val.id] = folder;\n\t\t\tparent.children.push(folder);\n\t\t\tsortFoldersByName(parent.children);\n\t\t}\n\t});\nexport const handleLinkCreated = (created: Array<SoapLink>): void =>\n\tcreated.forEach((val: SoapLink) => {\n\t\tif (val.id && val.l && view && val.view === view) {\n\t\t\tconst parent = folders[val.l];\n\t\t\tconst folder: LinkFolder = {\n\t\t\t\t...normalizeLink(val, parent),\n\t\t\t\tisLink: true,\n\t\t\t\tchildren: [],\n\t\t\t\tparent: parent?.id,\n\t\t\t\tdepth: parent && parent.depth !== undefined ? parent.depth + 1 : 0\n\t\t\t};\n\t\t\tfolders[val.id] = folder;\n\t\t\tparent.children.push(folder);\n\t\t\tsortFoldersByName(parent.children);\n\t\t}\n\t});\n\nfunction getKeyByValue(map: Folders, searchValue: Partial<UserFolder>): string | undefined {\n\treturn Object.keys(map).find(\n\t\t(key) => searchValue.id === `${(map[key] as LinkFolder).zid}:${(map[key] as LinkFolder).rid}`\n\t);\n}\n\nfunction folderIsSharedWithMe(folderId: string | undefined): boolean {\n\tif (!folderId) return false;\n\tconst folder = folders[folderId];\n\tif (folder?.parent) {\n\t\treturn folderIsSharedWithMe(folder?.parent);\n\t}\n\treturn folder?.name === 'USER_ROOT';\n}\n\nexport const handleFolderModified = (modified: Array<Partial<UserFolder>>): void =>\n\t// the type defined in shell is not correct refs: SHELL-118\n\t// FIXME: remove the ts-ignore when the type will be fixed\n\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t// @ts-ignore\n\tmodified.forEach((val: Partial<SoapFolder>): void => {\n\t\tif (!val.id) return;\n\t\tconst mountPointId = val.id.includes(':') ? getKeyByValue(folders, val) : val.id;\n\t\tconst parentMountPointId = getKeyByValue(folders, { id: val.l });\n\t\tconst isSharedWithMe = folderIsSharedWithMe(mountPointId);\n\t\tconst parentIsSharedWithMe = folderIsSharedWithMe(parentMountPointId);\n\t\tconst parentFolderId = parentIsSharedWithMe && parentMountPointId ? parentMountPointId : val.l;\n\t\tconst folderId = isSharedWithMe && mountPointId ? mountPointId : val.id;\n\t\tconst folder = folderId ? folders[folderId] : null;\n\n\t\tif (folder) {\n\t\t\tObject.assign(folder, omit({ ...val, id: folderId }));\n\t\t\tupdateChildren(folder, val);\n\t\t\tif (typeof val.f !== 'undefined') {\n\t\t\t\tfolder.checked = testFolderIsChecked({ string: val.f });\n\t\t\t}\n\n\t\t\tconst oldParentId = folder.parent;\n\n\t\t\tif (oldParentId) {\n\t\t\t\tconst oldParent = folders[oldParentId];\n\t\t\t\tif (oldParent) {\n\t\t\t\t\tif (!val.l) {\n\t\t\t\t\t\toldParent.children = oldParent.children.map((f) => (f.id !== val.id ? f : folder));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst newParent = parentFolderId ? folders[parentFolderId] : null;\n\t\t\t\t\t\tif (newParent) {\n\t\t\t\t\t\t\toldParent.children = oldParent.children.filter((f) => f.id !== folderId);\n\t\t\t\t\t\t\tnewParent.children.push(folder);\n\t\t\t\t\t\t\tsortFoldersByName(newParent.children);\n\t\t\t\t\t\t\tfolder.parent = newParent.id;\n\t\t\t\t\t\t\tfolder.depth = newParent?.depth !== undefined ? newParent.depth + 1 : 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfolders[folderId] = folder;\n\t\t\t}\n\t\t}\n\t});\nexport const handleFolderDeleted = (deleted: string[]): void =>\n\tdeleted.forEach((val) => {\n\t\tconst folder = folders[val];\n\t\tif (folder) {\n\t\t\tif (folder.parent) {\n\t\t\t\tconst parent = folders[folder.parent];\n\t\t\t\tparent.children = parent.children.filter((obj) => obj.id !== val);\n\t\t\t}\n\t\t\tdelete folders[val];\n\t\t\tdelete searches[val];\n\t\t}\n\t});\nexport const handleFolderNotify = (notify: SoapNotify): void => {\n\thandleFolderCreated(notify.created?.folder ?? []);\n\thandleLinkCreated(notify.created?.link ?? []);\n\t// the type defined in shell is not correct refs: SHELL-118\n\t// FIXME: remove the ts-ignore when the type will be fixed\n\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t// @ts-ignore\n\thandleFolderModified([...(notify.modified?.folder ?? []), ...(notify.modified?.link ?? [])]);\n\thandleFolderDeleted(notify.deleted ?? []);\n};\n\nexport const handleFoldersMessages = ({ data }: FolderMessage): void => {\n\tif (data.op === 'refresh' && data.folder) {\n\t\thandleFolderRefresh(data.folder, data.currentView);\n\t}\n\tif (data.op === 'notify') {\n\t\thandleFolderNotify(data.notify);\n\t}\n};\n\nexport const handleMessage = ({ data }: FolderMessage): void => {\n\thandleFoldersMessages({ data });\n\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t// @ts-ignore\n\tpostMessage({ folders, linksIdMap, searches });\n};\n"]}
1
+ {"version":3,"file":"handle-message.js","sourceRoot":"","sources":["../../src/worker/handle-message.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAiB1C,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB,IAAI,OAAO,GAAY,EAAE,CAAC;AAC1B,MAAM,QAAQ,GAAa,EAAE,CAAC;AAC9B,MAAM,UAAU,GAAe,EAAE,CAAC;AAClC,8EAA8E;AAC9E,IAAI,IAAwB,CAAC;AAE7B,MAAM,CAAC,MAAM,SAAS,GAAG;IACxB,UAAU,EAAE,GAAY,EAAE,CAAC,OAAO;IAClC,YAAY,EAAE,GAAS,EAAE;QACxB,OAAO,GAAG,EAAE,CAAC;IACd,CAAC;IACD,UAAU,EAAE,CAAC,IAAa,EAAQ,EAAE;QACnC,OAAO,GAAG,IAAI,CAAC;IAChB,CAAC;IACD,cAAc,EAAE,CAAC,OAAmB,EAAQ,EAAE;QAC7C,IAAI,GAAG,OAAO,CAAC;IAChB,CAAC;IACD,cAAc,EAAE,GAAuB,EAAE,CAAC,IAAI;CAC9C,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,GAAkB,EAAiB,EAAE,CAC/D,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;IACjB,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACxC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACxC,IAAI,UAAU,GAAG,UAAU,EAAE,CAAC;QAC7B,OAAO,CAAC,CAAC,CAAC;IACX,CAAC;IACD,IAAI,UAAU,GAAG,UAAU,EAAE,CAAC;QAC7B,OAAO,CAAC,CAAC;IACV,CAAC;IACD,OAAO,CAAC,CAAC;AACV,CAAC,CAAC,CAAC;AAEJ,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,OAAY,EAAO,EAAE;IAC5D,IAAI,OAAO,CAAC,aAAa,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACjC,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtC,IAAI,OAAO,CAAC,aAAa,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;gBACxD,MAAM,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC5D,WAAW,CAAC,aAAa,GAAG,GAAG,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3E,CAAC;YACD,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACjC,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACtC,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAAE,MAAM,EAAkC,EAAW,EAAE,CAC1F,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;AAExB,MAAM,IAAI,GAAG,CAAC;AACb,6DAA6D;AAC7D,IAAI,EAAE,EAAE;AACR,6DAA6D;AAC7D,MAAM,EAAE,EAAE;AACV,6DAA6D;AAC7D,MAAM,EAAE,EAAE,EACV,GAAG,GAAG,EACe,EAAuB,EAAE,CAAC,GAAG,CAAC;AAEpD,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAiB,EAAE,EAAU,EAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC9F,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAa,EAAE,CAAU,EAAc,EAAE,CAAC,CAAC;IACpE,EAAE,EAAE,CAAC,CAAC,EAAE;IACR,IAAI,EAAE,CAAC,CAAC,IAAI;IACZ,IAAI,EAAE,CAAC,CAAC,IAAI;IACZ,aAAa,EAAE,CAAC,CAAC,aAAa;IAC9B,CAAC,EAAE,CAAC,CAAC,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,KAAK;IACd,OAAO,EAAE,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7C,CAAC,EAAE,CAAC,CAAC,CAAC;IACN,2DAA2D;IAC3D,qDAAqD;IACrD,KAAK,EAAG,CAAC,CAAC,KAA2B,IAAI,CAAC,EAAE,KAAK;IACjD,GAAG,EAAE,CAAC,CAAC,GAAG;IACV,CAAC,EAAE,CAAC,CAAC,CAAC;IACN,GAAG,EAAE,CAAC,CAAC,GAAG;IACV,IAAI,EAAE,CAAC,CAAC,IAAI;IACZ,GAAG,EAAE,CAAC,CAAC,GAAG;IACV,EAAE,EAAE,CAAC,CAAC,EAAE;IACR,EAAE,EAAE,CAAC,CAAC,EAAE;IACR,CAAC,EAAE,CAAC,CAAC,CAAC;IACN,GAAG,EAAE,CAAC,CAAC,GAAG;IACV,CAAC,EAAE,CAAC,CAAC,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,IAAI;IACZ,MAAM,EAAE,CAAC,CAAC,MAAM;IAChB,GAAG,EAAE,CAAC,CAAC,GAAG;IACV,GAAG,EAAE,CAAC,CAAC,GAAG;IACV,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,kBAAkB;IAC1C,kBAAkB,EAAE,CAAC,CAAC,kBAAkB;IACxC,IAAI,EAAE,CAAC,CAAC,IAAI;IACZ,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;IACxB,IAAI,EAAE,CAAC,CAAC,IAAI;IACZ,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;IACxB,IAAI,EAAE,CAAC,CAAC,IAAI;IACZ,GAAG,EAAE,CAAC,CAAC,GAAG;IACV,eAAe,EAAE,CAAC,CAAC,eAAe;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAmB,EAAmC,EAAE,CAAC,CAAC;IACzF,GAAG,SAAS,CAAC,CAAC,CAAC;IACf,KAAK,EAAE,CAAC,CAAC,KAAK;IACd,MAAM,EAAE,CAAC,CAAC,MAAM;IAChB,KAAK,EAAE,CAAC,CAAC,KAAK;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAW,EAAE,CAAU,EAAiC,EAAE,CAAC,CAAC;IACzF,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IAClB,KAAK,EAAE,CAAC,CAAC,KAAK;IACd,GAAG,EAAE,CAAC,CAAC,GAAG;IACV,GAAG,EAAE,CAAC,CAAC,GAAG;IACV,KAAK,EAAE,CAAC,CAAC,KAAK;IACd,KAAK,EAAE,CAAC,CAAC,KAAK;IACd,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ;IACtB,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM;CAClB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,UAA4B,EAAE,MAAc,EAAQ,EAAE;IACnF,MAAM,MAAM,GAAG;QACd,GAAG,eAAe,CAAC,UAAU,CAAC;QAC9B,MAAM,EAAE,MAAM,EAAE,EAAE;QAClB,MAAM,EAAE,MAAM,EAAE,MAAM;KACtB,CAAC;IACF,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAkB,EAAE,KAAa,EAAE,MAAe,EAAc,EAAE;IAC7F,MAAM,IAAI,GAAG;QACZ,GAAG,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC;QAClC,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,MAAM,EAAE,EAAE;QAClB,KAAK;KACS,CAAC;IAChB,6CAA6C;IAC7C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IAE5B,iEAAiE;IACjE,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC/C,YAAY,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEzD,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/B,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;YACxB,mEAAmE;YACnE,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;IACF,CAAC,CAAC,CAAC;IACH,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7B,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;IACF,CAAC,CAAC,CAAC;IACH,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/B,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAC5B,UAAsB,EACtB,KAAa,EACb,MAAe,EACF,EAAE;IACf,MAAM,MAAM,GAAe;QAC1B,GAAG,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;QAChC,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,MAAM,EAAE,EAAE;QAClB,KAAK;KACL,CAAC;IACF,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;IAChC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACjC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;YAClD,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC;gBAC1B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;QACF,CAAC;IACF,CAAC,CAAC,CAAC;IACH,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/B,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;YAChD,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC;gBAC1B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;QACF,CAAC;IACF,CAAC,CAAC,CAAC;IACH,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACjC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAClC,WAA8B,EAC9B,WAAuB,EACU,EAAE;IACnC,IAAI,GAAG,WAAW,CAAC;IACnB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5C,OAAO;YACN,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,MAAkB,EAAE,CAAC,CAAC,CAAC;SAChD,CAAC;IACxB,CAAC;IACD,OAAO,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAA0B,EAAQ,EAAE,CACvE,OAAO,CAAC,OAAO,CAAC,CAAC,GAAe,EAAE,EAAE;IACnC,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAe;YAC1B,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;YACzB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,MAAM,EAAE,EAAE;YAClB,KAAK,EAAE,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAClE,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;QACzB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;AACF,CAAC,CAAC,CAAC;AACJ,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAwB,EAAQ,EAAE,CACnE,OAAO,CAAC,OAAO,CAAC,CAAC,GAAa,EAAE,EAAE;IACjC,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAe;YAC1B,GAAG,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC;YAC7B,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,MAAM,EAAE,EAAE;YAClB,KAAK,EAAE,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAClE,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;QACzB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;AACF,CAAC,CAAC,CAAC;AAEJ,SAAS,aAAa,CAAC,GAAY,EAAE,WAAgC;IACpE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAC3B,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,GAAI,GAAG,CAAC,GAAG,CAAgB,CAAC,GAAG,IAAK,GAAG,CAAC,GAAG,CAAgB,CAAC,GAAG,EAAE,CAC7F,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,QAA4B;IACzD,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,MAAM,EAAE,IAAI,KAAK,WAAW,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,QAAoC,EAAQ,EAAE;AAClF,2DAA2D;AAC3D,0DAA0D;AAC1D,6DAA6D;AAC7D,aAAa;AACb,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAwB,EAAQ,EAAE;IACnD,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO;IACpB,MAAM,YAAY,GAAG,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACjF,MAAM,kBAAkB,GAAG,aAAa,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;IACtE,MAAM,cAAc,GAAG,oBAAoB,IAAI,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/F,MAAM,QAAQ,GAAG,cAAc,IAAI,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACxE,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEnD,IAAI,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACtD,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5B,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,CAAC,OAAO,GAAG,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;QAElC,IAAI,WAAW,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;YACvC,IAAI,SAAS,EAAE,CAAC;gBACf,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBACZ,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBACpF,CAAC;qBAAM,CAAC;oBACP,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAClE,IAAI,SAAS,EAAE,CAAC;wBACf,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;wBACzE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAChC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;wBACtC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;wBAC7B,MAAM,CAAC,KAAK,GAAG,SAAS,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzE,CAAC;gBACF,CAAC;YACF,CAAC;YACD,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QAC5B,CAAC;IACF,CAAC;AACF,CAAC,CAAC,CAAC;AACJ,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAiB,EAAQ,EAAE,CAC9D,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;IACvB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,MAAM,EAAE,CAAC;QACZ,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;QACpB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;AACF,CAAC,CAAC,CAAC;AACJ,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAkB,EAAQ,EAAE;IAC9D,mBAAmB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;IAClD,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IAC9C,2DAA2D;IAC3D,0DAA0D;IAC1D,6DAA6D;IAC7D,aAAa;IACb,oBAAoB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7F,mBAAmB,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAAE,IAAI,EAAiB,EAAQ,EAAE;IACtE,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1C,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC1B,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAAE,IAAI,EAAiB,EAAQ,EAAE;IAC9D,qBAAqB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAChC,6DAA6D;IAC7D,aAAa;IACb,WAAW,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;AAChD,CAAC,CAAC","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport type { SoapNotify } from '@zextras/carbonio-ui-soap-lib';\n\nimport { getLinkIdMapKey } from './utils';\nimport type {\n\tBaseFolder,\n\tFolder,\n\tFolderMessage,\n\tFolders,\n\tLinkFolder,\n\tLinkFolderFields,\n\tSearches,\n\tSearchFolderFields,\n\tSoapFolder,\n\tSoapLink,\n\tSoapSearchFolder,\n\tUserFolder\n} from '../types';\nimport { FolderView, LinksIdMap } from '../types';\n\nconst IM_LOGS = '14';\nconst USER_ROOT = '1';\n\nlet folders: Folders = {};\nconst searches: Searches = {};\nconst linksIdMap: LinksIdMap = {};\n// used to check if a newly created folder is being added to the correct store\nlet view: string | undefined;\n\nexport const testUtils = {\n\tgetFolders: (): Folders => folders,\n\tresetFolders: (): void => {\n\t\tfolders = {};\n\t},\n\tsetFolders: (data: Folders): void => {\n\t\tfolders = data;\n\t},\n\tsetCurrentView: (current: FolderView): void => {\n\t\tview = current;\n\t},\n\tgetCurrentView: (): string | undefined => view\n};\n\nconst sortFoldersByName = (obj: Array<Folder>): Array<Folder> =>\n\tobj.sort((a, b) => {\n\t\tconst aLowerName = a.name.toLowerCase();\n\t\tconst bLowerName = b.name.toLowerCase();\n\t\tif (aLowerName < bLowerName) {\n\t\t\treturn -1;\n\t\t}\n\t\tif (aLowerName > bLowerName) {\n\t\t\treturn 1;\n\t\t}\n\t\treturn 0;\n\t});\n\nconst updateChildren = (folder: Folder, changes: any): any => {\n\tif (changes.absFolderPath && folder.children.length) {\n\t\tfolder.children.forEach((child) => {\n\t\t\tconst childFolder = folders[child.id];\n\t\t\tif (changes.absFolderPath && childFolder.absFolderPath) {\n\t\t\t\tconst paths = childFolder.absFolderPath.split('/').slice(2);\n\t\t\t\tchildFolder.absFolderPath = `${changes.absFolderPath}/${paths.join('/')}`;\n\t\t\t}\n\t\t\tif (childFolder.children.length) {\n\t\t\t\tupdateChildren(childFolder, changes);\n\t\t\t}\n\t\t});\n\t}\n};\n\nexport const testFolderIsChecked = ({ string }: { string: string | undefined }): boolean =>\n\t/#/.test(string || '');\n\nconst omit = ({\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tlink: _1,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tfolder: _2,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tsearch: _3,\n\t...obj\n}: Partial<SoapFolder>): Partial<SoapFolder> => obj;\n\nexport const hasId = (f: { id: string }, id: string): boolean => f.id.split(':').includes(id);\nexport const normalize = (f: SoapFolder, p?: Folder): BaseFolder => ({\n\tid: f.id,\n\tuuid: f.uuid,\n\tname: f.name,\n\tabsFolderPath: f.absFolderPath,\n\tl: f.l,\n\tluuid: f.luuid,\n\tchecked: testFolderIsChecked({ string: f.f }),\n\tf: f.f,\n\t// the type defined in shell is not correct refs: SHELL-118\n\t// FIXME: remove the cast when the type will be fixed\n\tcolor: (f.color as unknown as number) || p?.color,\n\trgb: f.rgb,\n\tu: f.u,\n\ti4u: f.i4u,\n\tview: f.view,\n\trev: f.rev,\n\tms: f.ms,\n\tmd: f.md,\n\tn: f.n,\n\ti4n: f.i4n,\n\ts: f.s,\n\ti4ms: f.i4ms,\n\ti4next: f.i4next,\n\turl: f.url,\n\tlsd: f.lsd,\n\tactivesyncdisabled: !!f.activesyncdisabled,\n\twebOfflineSyncDays: f.webOfflineSyncDays,\n\tperm: f.perm,\n\trecursive: !!f.recursive,\n\trest: f.rest,\n\tdeletable: !!f.deletable,\n\tmeta: f.meta,\n\tacl: f.acl,\n\tretentionPolicy: f.retentionPolicy\n});\n\nexport const normalizeSearch = (s: SoapSearchFolder): BaseFolder & SearchFolderFields => ({\n\t...normalize(s),\n\tquery: s.query,\n\tsortBy: s.sortBy,\n\ttypes: s.types\n});\n\nexport const normalizeLink = (l: SoapLink, p?: Folder): BaseFolder & LinkFolderFields => ({\n\t...normalize(l, p),\n\towner: l.owner,\n\tzid: l.zid,\n\trid: l.rid,\n\truuid: l.ruuid,\n\toname: l.oname,\n\treminder: !!l.reminder,\n\tbroken: !!l.broken\n});\n\nexport const processSearch = (soapSearch: SoapSearchFolder, parent: Folder): void => {\n\tconst search = {\n\t\t...normalizeSearch(soapSearch),\n\t\tparent: parent?.id,\n\t\tisLink: parent?.isLink\n\t};\n\tsearches[search.id] = search;\n};\n\nexport const processLink = (soapLink: SoapLink, depth: number, parent?: Folder): LinkFolder => {\n\tconst link = {\n\t\t...normalizeLink(soapLink, parent),\n\t\tisLink: true,\n\t\tchildren: [],\n\t\tparent: parent?.id,\n\t\tdepth\n\t} as LinkFolder;\n\t// eslint-disable-next-line no-param-reassign\n\tfolders[soapLink.id] = link;\n\n\t// Get the zid:rid key of the link and add it to the links id map\n\tconst linkIdMapKey = getLinkIdMapKey(soapLink);\n\tlinkIdMapKey && (linksIdMap[linkIdMapKey] = soapLink.id);\n\n\tsoapLink?.folder?.forEach((f) => {\n\t\tif (!hasId(f, IM_LOGS)) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-use-before-define\n\t\t\tconst child = processFolder(f, depth + 1, link);\n\t\t\tlink.children.push(child);\n\t\t}\n\t});\n\tsoapLink?.link?.forEach((l) => {\n\t\tif (!hasId(l, IM_LOGS)) {\n\t\t\tconst child = processLink(l, depth + 1, link);\n\t\t\tlink.children.push(child);\n\t\t}\n\t});\n\tsoapLink?.search?.forEach((s) => {\n\t\tprocessSearch(s, link);\n\t});\n\n\treturn link;\n};\n\nexport const processFolder = (\n\tsoapFolder: SoapFolder,\n\tdepth: number,\n\tparent?: Folder\n): UserFolder => {\n\tconst folder: UserFolder = {\n\t\t...normalize(soapFolder, parent),\n\t\tisLink: false,\n\t\tchildren: [],\n\t\tparent: parent?.id,\n\t\tdepth\n\t};\n\tfolders[soapFolder.id] = folder;\n\tsoapFolder?.folder?.forEach((f) => {\n\t\tif (!hasId(f, IM_LOGS)) {\n\t\t\tconst child = processFolder(f, depth + 1, folder);\n\t\t\tif (!hasId(f, USER_ROOT)) {\n\t\t\t\tfolder.children.push(child);\n\t\t\t}\n\t\t}\n\t});\n\tsoapFolder?.link?.forEach((l) => {\n\t\tif (!hasId(l, IM_LOGS)) {\n\t\t\tconst child = processLink(l, depth + 1, folder);\n\t\t\tif (!hasId(l, USER_ROOT)) {\n\t\t\t\tfolder.children.push(child);\n\t\t\t}\n\t\t}\n\t});\n\tsoapFolder?.search?.forEach((s) => {\n\t\tprocessSearch(s, folder);\n\t});\n\treturn folder;\n};\n\nexport const handleFolderRefresh = (\n\tsoapFolders: Array<SoapFolder>,\n\tcurrentView: FolderView\n): UserFolder | Array<UserFolder> => {\n\tview = currentView;\n\tif (soapFolders.length > 1) {\n\t\tconst sharedAccounts = soapFolders.slice(1);\n\t\treturn [\n\t\t\tprocessFolder(soapFolders[0], 0),\n\t\t\t...sharedAccounts.map((folder) => processLink(folder as SoapLink, 0))\n\t\t] as Array<UserFolder>;\n\t}\n\treturn processFolder(soapFolders[0], 0);\n};\n\nexport const handleFolderCreated = (created: Array<SoapFolder>): void =>\n\tcreated.forEach((val: SoapFolder) => {\n\t\tif (val.id && val.l && view && val.view === view) {\n\t\t\tconst parent = folders[val.l];\n\t\t\tconst folder: UserFolder = {\n\t\t\t\t...normalize(val, parent),\n\t\t\t\tisLink: false,\n\t\t\t\tchildren: [],\n\t\t\t\tparent: parent?.id,\n\t\t\t\tdepth: parent && parent.depth !== undefined ? parent.depth + 1 : 0\n\t\t\t};\n\t\t\tfolders[val.id] = folder;\n\t\t\tparent.children.push(folder);\n\t\t\tsortFoldersByName(parent.children);\n\t\t}\n\t});\nexport const handleLinkCreated = (created: Array<SoapLink>): void =>\n\tcreated.forEach((val: SoapLink) => {\n\t\tif (val.id && val.l && view && val.view === view) {\n\t\t\tconst parent = folders[val.l];\n\t\t\tconst folder: LinkFolder = {\n\t\t\t\t...normalizeLink(val, parent),\n\t\t\t\tisLink: true,\n\t\t\t\tchildren: [],\n\t\t\t\tparent: parent?.id,\n\t\t\t\tdepth: parent && parent.depth !== undefined ? parent.depth + 1 : 0\n\t\t\t};\n\t\t\tfolders[val.id] = folder;\n\t\t\tparent.children.push(folder);\n\t\t\tsortFoldersByName(parent.children);\n\t\t}\n\t});\n\nfunction getKeyByValue(map: Folders, searchValue: Partial<UserFolder>): string | undefined {\n\treturn Object.keys(map).find(\n\t\t(key) => searchValue.id === `${(map[key] as LinkFolder).zid}:${(map[key] as LinkFolder).rid}`\n\t);\n}\n\nfunction folderIsSharedWithMe(folderId: string | undefined): boolean {\n\tif (!folderId) return false;\n\tconst folder = folders[folderId];\n\tif (folder?.parent) {\n\t\treturn folderIsSharedWithMe(folder?.parent);\n\t}\n\treturn folder?.name === 'USER_ROOT';\n}\n\nexport const handleFolderModified = (modified: Array<Partial<UserFolder>>): void =>\n\t// the type defined in shell is not correct refs: SHELL-118\n\t// FIXME: remove the ts-ignore when the type will be fixed\n\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t// @ts-ignore\n\tmodified.forEach((val: Partial<SoapFolder>): void => {\n\t\tif (!val.id) return;\n\t\tconst mountPointId = val.id.includes(':') ? getKeyByValue(folders, val) : val.id;\n\t\tconst parentMountPointId = getKeyByValue(folders, { id: val.l });\n\t\tconst isSharedWithMe = folderIsSharedWithMe(mountPointId);\n\t\tconst parentIsSharedWithMe = folderIsSharedWithMe(parentMountPointId);\n\t\tconst parentFolderId = parentIsSharedWithMe && parentMountPointId ? parentMountPointId : val.l;\n\t\tconst folderId = isSharedWithMe && mountPointId ? mountPointId : val.id;\n\t\tconst folder = folderId ? folders[folderId] : null;\n\n\t\tif (folder) {\n\t\t\tObject.assign(folder, omit({ ...val, id: folderId }));\n\t\t\tupdateChildren(folder, val);\n\t\t\tif (typeof val.f !== 'undefined') {\n\t\t\t\tfolder.checked = testFolderIsChecked({ string: val.f });\n\t\t\t}\n\n\t\t\tconst oldParentId = folder.parent;\n\n\t\t\tif (oldParentId) {\n\t\t\t\tconst oldParent = folders[oldParentId];\n\t\t\t\tif (oldParent) {\n\t\t\t\t\tif (!val.l) {\n\t\t\t\t\t\toldParent.children = oldParent.children.map((f) => (f.id !== val.id ? f : folder));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst newParent = parentFolderId ? folders[parentFolderId] : null;\n\t\t\t\t\t\tif (newParent) {\n\t\t\t\t\t\t\toldParent.children = oldParent.children.filter((f) => f.id !== folderId);\n\t\t\t\t\t\t\tnewParent.children.push(folder);\n\t\t\t\t\t\t\tsortFoldersByName(newParent.children);\n\t\t\t\t\t\t\tfolder.parent = newParent.id;\n\t\t\t\t\t\t\tfolder.depth = newParent?.depth !== undefined ? newParent.depth + 1 : 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfolders[folderId] = folder;\n\t\t\t}\n\t\t}\n\t});\nexport const handleFolderDeleted = (deleted: string[]): void =>\n\tdeleted.forEach((val) => {\n\t\tconst folder = folders[val];\n\t\tif (folder) {\n\t\t\tif (folder.parent) {\n\t\t\t\tconst parent = folders[folder.parent];\n\t\t\t\tparent.children = parent.children.filter((obj) => obj.id !== val);\n\t\t\t}\n\t\t\tdelete folders[val];\n\t\t\tdelete searches[val];\n\t\t}\n\t});\nexport const handleFolderNotify = (notify: SoapNotify): void => {\n\thandleFolderCreated(notify.created?.folder ?? []);\n\thandleLinkCreated(notify.created?.link ?? []);\n\t// the type defined in shell is not correct refs: SHELL-118\n\t// FIXME: remove the ts-ignore when the type will be fixed\n\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t// @ts-ignore\n\thandleFolderModified([...(notify.modified?.folder ?? []), ...(notify.modified?.link ?? [])]);\n\thandleFolderDeleted(notify.deleted ?? []);\n};\n\nexport const handleFoldersMessages = ({ data }: FolderMessage): void => {\n\tif (data.op === 'refresh' && data.folder) {\n\t\thandleFolderRefresh(data.folder, data.currentView);\n\t}\n\tif (data.op === 'notify') {\n\t\thandleFolderNotify(data.notify);\n\t}\n};\n\nexport const handleMessage = ({ data }: FolderMessage): void => {\n\thandleFoldersMessages({ data });\n\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t// @ts-ignore\n\tpostMessage({ folders, linksIdMap, searches });\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zextras/carbonio-ui-commons",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "description": "Carbonio UI Commons",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -67,9 +67,9 @@
67
67
  "@types/react-dom": "^18.3.1",
68
68
  "@types/react-redux": "^7.1.25",
69
69
  "@types/uuid": "^10.0.0",
70
- "@zextras/carbonio-search-ui": "github:zextras/carbonio-search-ui#devel",
70
+ "@zextras/carbonio-search-ui": "github:zextras/carbonio-search-ui#v0.0.7",
71
71
  "@zextras/carbonio-ui-configs": "^2.1.0",
72
- "@zextras/carbonio-ui-sdk": "2.2.1",
72
+ "@zextras/carbonio-ui-sdk": "2.2.2",
73
73
  "babel-plugin-transform-import-meta": "^2.2.0",
74
74
  "eslint-plugin-jest-dom": "^5.4.0",
75
75
  "eslint-plugin-notice": "^0.9.10",
@@ -98,9 +98,9 @@
98
98
  "@emotion/styled": "^11.14.0",
99
99
  "@mui/icons-material": "^5.15.12",
100
100
  "@mui/material": "^5.15.12",
101
- "@zextras/carbonio-design-system": "11.0.2",
102
- "@zextras/carbonio-shell-ui": "^13.0.0-devel.1766140356030",
103
- "@zextras/carbonio-ui-soap-lib": "1.0.4",
101
+ "@zextras/carbonio-design-system": ">=12.0.0",
102
+ "@zextras/carbonio-shell-ui": ">=12.0.0",
103
+ "@zextras/carbonio-ui-soap-lib": ">=1.0.4",
104
104
  "lodash": "^4.17.21",
105
105
  "react": "^18.3.1",
106
106
  "react-dom": "^18.3.1",