@webiny/app-aco 0.0.0-unstable.2af142b57e → 0.0.0-unstable.496cf268ac
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/README.md +107 -47
- package/components/Dialogs/DialogCreate.d.ts +1 -1
- package/components/Dialogs/DialogCreate.js +55 -28
- package/components/Dialogs/DialogCreate.js.map +1 -1
- package/components/Dialogs/DialogDelete.js +1 -1
- package/components/Dialogs/DialogDelete.js.map +1 -1
- package/components/Dialogs/DialogMove.d.ts +11 -0
- package/components/Dialogs/DialogMove.js +115 -0
- package/components/Dialogs/DialogMove.js.map +1 -0
- package/components/Dialogs/DialogUpdate.js +30 -45
- package/components/Dialogs/DialogUpdate.js.map +1 -1
- package/components/Dialogs/styled.d.ts +15 -5
- package/components/Dialogs/styled.js +8 -3
- package/components/Dialogs/styled.js.map +1 -1
- package/components/Tree/ButtonCreate/styled.d.ts +12 -12
- package/components/Tree/ButtonCreate/styled.js +1 -1
- package/components/Tree/ButtonCreate/styled.js.map +1 -1
- package/components/Tree/Empty/styled.d.ts +5 -2
- package/components/Tree/List/index.d.ts +3 -1
- package/components/Tree/List/index.js +4 -1
- package/components/Tree/List/index.js.map +1 -1
- package/components/Tree/List/utils.d.ts +2 -1
- package/components/Tree/List/utils.js +4 -0
- package/components/Tree/List/utils.js.map +1 -1
- package/components/Tree/Loader/index.js +2 -1
- package/components/Tree/Loader/index.js.map +1 -1
- package/components/Tree/Loader/styled.d.ts +9 -3
- package/components/Tree/MenuActions/index.js +10 -3
- package/components/Tree/MenuActions/index.js.map +1 -1
- package/components/Tree/MenuActions/styled.d.ts +8 -2
- package/components/Tree/MenuActions/styled.js +8 -2
- package/components/Tree/MenuActions/styled.js.map +1 -1
- package/components/Tree/Node/index.d.ts +4 -2
- package/components/Tree/Node/index.js +11 -6
- package/components/Tree/Node/index.js.map +1 -1
- package/components/Tree/Node/styled.d.ts +29 -24
- package/components/Tree/Node/styled.js +4 -4
- package/components/Tree/Node/styled.js.map +1 -1
- package/components/Tree/NodePreview/styled.d.ts +5 -2
- package/components/Tree/Placeholder/styled.d.ts +5 -2
- package/components/Tree/Title/styled.d.ts +9 -3
- package/components/Tree/Title/styled.js +1 -1
- package/components/Tree/Title/styled.js.map +1 -1
- package/components/Tree/index.d.ts +3 -0
- package/components/Tree/index.js +8 -3
- package/components/Tree/index.js.map +1 -1
- package/components/Tree/styled.d.ts +5 -2
- package/components/Tree/styled.js +1 -1
- package/components/Tree/styled.js.map +1 -1
- package/contexts/folders.js +1 -1
- package/contexts/folders.js.map +1 -1
- package/contexts/links.d.ts +18 -0
- package/contexts/links.js +371 -0
- package/contexts/links.js.map +1 -0
- package/contexts/records.d.ts +12 -6
- package/contexts/records.js +97 -36
- package/contexts/records.js.map +1 -1
- package/graphql/links.gql.d.ts +5 -0
- package/graphql/links.gql.js +34 -0
- package/graphql/links.gql.js.map +1 -0
- package/graphql/records.gql.js +2 -2
- package/graphql/records.gql.js.map +1 -1
- package/hooks/index.d.ts +1 -0
- package/hooks/index.js +11 -0
- package/hooks/index.js.map +1 -1
- package/hooks/useAcoList.d.ts +18 -0
- package/hooks/useAcoList.js +137 -0
- package/hooks/useAcoList.js.map +1 -0
- package/hooks/useLinks.d.ts +20 -0
- package/hooks/useLinks.js +65 -0
- package/hooks/useLinks.js.map +1 -0
- package/hooks/useRecords.d.ts +12 -8
- package/hooks/useRecords.js +16 -6
- package/hooks/useRecords.js.map +1 -1
- package/index.d.ts +1 -1
- package/index.js +6 -0
- package/index.js.map +1 -1
- package/package.json +13 -11
- package/sorting.d.ts +3 -0
- package/sorting.js +32 -0
- package/sorting.js.map +1 -0
- package/types.d.ts +21 -5
- package/types.js +14 -1
- package/types.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["FolderTree","type","title","focusedFolderId","onFolderClick","onTitleClick","useFolders","folders","useState","createDialogOpen","setCreateDialogOpen","isDragging","setIsDragging","renderList","length","undefined"],"sources":["index.tsx"],"sourcesContent":["import React, { useState } from \"react\";\n\nimport { NodeModel } from \"@minoru/react-dnd-treeview\";\n\nimport { useFolders } from \"~/hooks/useFolders\";\n\nimport { CreateButton } from \"./ButtonCreate\";\nimport { Empty } from \"~/components/Tree/Empty\";\nimport { Loader } from \"./Loader\";\nimport { List } from \"./List\";\nimport { Title } from \"./Title\";\nimport { FolderDialogCreate } from \"~/components\";\n\nimport { Container } from \"./styled\";\n\nimport { DndItemData } from \"~/types\";\n\ntype Props = {\n type: string;\n title: string;\n onFolderClick: (data: NodeModel<DndItemData>[\"data\"]) => void;\n onTitleClick?: (event: React.MouseEvent<HTMLElement>) => void;\n focusedFolderId?: string;\n};\n\nexport const FolderTree: React.FC<Props> = ({\n type,\n title,\n focusedFolderId,\n onFolderClick,\n onTitleClick\n}) => {\n const { folders } = useFolders(type);\n const [createDialogOpen, setCreateDialogOpen] = useState<boolean>(false);\n\n // Little CSS trick here: since the folder title has absolute position, user can drag a folder over it and move it to root folder.\n // While we are moving folders around we disable any title pointer event.\n const [isDragging, setIsDragging] = useState<boolean>(false);\n\n const renderList = () => {\n if (!folders) {\n return <Loader />;\n }\n\n if (folders.length > 0) {\n return (\n <>\n <List\n type={type}\n folders={folders}\n onFolderClick={onFolderClick}\n focusedFolderId={focusedFolderId}\n onDragStart={() => setIsDragging(true)}\n onDragEnd={() => setIsDragging(false)}\n />\n <CreateButton onClick={() => setCreateDialogOpen(true)}
|
|
1
|
+
{"version":3,"names":["FolderTree","type","title","focusedFolderId","hiddenFolderIds","enableActions","enableCreate","onFolderClick","onTitleClick","useFolders","folders","useState","createDialogOpen","setCreateDialogOpen","isDragging","setIsDragging","renderList","length","undefined"],"sources":["index.tsx"],"sourcesContent":["import React, { useState } from \"react\";\n\nimport { NodeModel } from \"@minoru/react-dnd-treeview\";\n\nimport { useFolders } from \"~/hooks/useFolders\";\n\nimport { CreateButton } from \"./ButtonCreate\";\nimport { Empty } from \"~/components/Tree/Empty\";\nimport { Loader } from \"./Loader\";\nimport { List } from \"./List\";\nimport { Title } from \"./Title\";\nimport { FolderDialogCreate } from \"~/components\";\n\nimport { Container } from \"./styled\";\n\nimport { DndItemData } from \"~/types\";\n\ntype Props = {\n type: string;\n title: string;\n onFolderClick: (data: NodeModel<DndItemData>[\"data\"]) => void;\n enableCreate?: boolean;\n enableActions?: boolean;\n onTitleClick?: (event: React.MouseEvent<HTMLElement>) => void;\n focusedFolderId?: string;\n hiddenFolderIds?: string[];\n};\n\nexport const FolderTree: React.FC<Props> = ({\n type,\n title,\n focusedFolderId,\n hiddenFolderIds,\n enableActions,\n enableCreate,\n onFolderClick,\n onTitleClick\n}) => {\n const { folders } = useFolders(type);\n const [createDialogOpen, setCreateDialogOpen] = useState<boolean>(false);\n\n // Little CSS trick here: since the folder title has absolute position, user can drag a folder over it and move it to root folder.\n // While we are moving folders around we disable any title pointer event.\n const [isDragging, setIsDragging] = useState<boolean>(false);\n\n const renderList = () => {\n if (!folders) {\n return <Loader />;\n }\n\n if (folders.length > 0) {\n return (\n <>\n <List\n type={type}\n folders={folders}\n onFolderClick={onFolderClick}\n focusedFolderId={focusedFolderId}\n hiddenFolderIds={hiddenFolderIds}\n enableActions={enableActions}\n onDragStart={() => setIsDragging(true)}\n onDragEnd={() => setIsDragging(false)}\n />\n {enableCreate && <CreateButton onClick={() => setCreateDialogOpen(true)} />}\n </>\n );\n }\n\n return (\n <>\n <Empty />\n <CreateButton onClick={() => setCreateDialogOpen(true)} />\n </>\n );\n };\n\n return (\n <Container>\n <Title title={title} onClick={onTitleClick} isDragging={isDragging} />\n {renderList()}\n {enableCreate && (\n <FolderDialogCreate\n type={type}\n open={createDialogOpen}\n onClose={() => setCreateDialogOpen(false)}\n currentParentId={undefined}\n />\n )}\n </Container>\n );\n};\n"],"mappings":";;;;;;;;;AAAA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAeO,IAAMA,UAA2B,GAAG,SAA9BA,UAA2B,OASlC;EAAA,IARFC,IAAI,QAAJA,IAAI;IACJC,KAAK,QAALA,KAAK;IACLC,eAAe,QAAfA,eAAe;IACfC,eAAe,QAAfA,eAAe;IACfC,aAAa,QAAbA,aAAa;IACbC,YAAY,QAAZA,YAAY;IACZC,aAAa,QAAbA,aAAa;IACbC,YAAY,QAAZA,YAAY;EAEZ,kBAAoB,IAAAC,uBAAU,EAACR,IAAI,CAAC;IAA5BS,OAAO,eAAPA,OAAO;EACf,gBAAgD,IAAAC,eAAQ,EAAU,KAAK,CAAC;IAAA;IAAjEC,gBAAgB;IAAEC,mBAAmB;;EAE5C;EACA;EACA,iBAAoC,IAAAF,eAAQ,EAAU,KAAK,CAAC;IAAA;IAArDG,UAAU;IAAEC,aAAa;EAEhC,IAAMC,UAAU,GAAG,SAAbA,UAAU,GAAS;IACrB,IAAI,CAACN,OAAO,EAAE;MACV,oBAAO,6BAAC,cAAM,OAAG;IACrB;IAEA,IAAIA,OAAO,CAACO,MAAM,GAAG,CAAC,EAAE;MACpB,oBACI,yEACI,6BAAC,UAAI;QACD,IAAI,EAAEhB,IAAK;QACX,OAAO,EAAES,OAAQ;QACjB,aAAa,EAAEH,aAAc;QAC7B,eAAe,EAAEJ,eAAgB;QACjC,eAAe,EAAEC,eAAgB;QACjC,aAAa,EAAEC,aAAc;QAC7B,WAAW,EAAE;UAAA,OAAMU,aAAa,CAAC,IAAI,CAAC;QAAA,CAAC;QACvC,SAAS,EAAE;UAAA,OAAMA,aAAa,CAAC,KAAK,CAAC;QAAA;MAAC,EACxC,EACDT,YAAY,iBAAI,6BAAC,0BAAY;QAAC,OAAO,EAAE;UAAA,OAAMO,mBAAmB,CAAC,IAAI,CAAC;QAAA;MAAC,EAAG,CAC5E;IAEX;IAEA,oBACI,yEACI,6BAAC,YAAK,OAAG,eACT,6BAAC,0BAAY;MAAC,OAAO,EAAE;QAAA,OAAMA,mBAAmB,CAAC,IAAI,CAAC;MAAA;IAAC,EAAG,CAC3D;EAEX,CAAC;EAED,oBACI,6BAAC,iBAAS,qBACN,6BAAC,YAAK;IAAC,KAAK,EAAEX,KAAM;IAAC,OAAO,EAAEM,YAAa;IAAC,UAAU,EAAEM;EAAW,EAAG,EACrEE,UAAU,EAAE,EACZV,YAAY,iBACT,6BAAC,oBAAkB;IACf,IAAI,EAAEL,IAAK;IACX,IAAI,EAAEW,gBAAiB;IACvB,OAAO,EAAE;MAAA,OAAMC,mBAAmB,CAAC,KAAK,CAAC;IAAA,CAAC;IAC1C,eAAe,EAAEK;EAAU,EAElC,CACO;AAEpB,CAAC;AAAC"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
/// <reference types="web" />
|
|
3
2
|
/// <reference types="react" />
|
|
4
|
-
|
|
3
|
+
/// <reference types="web" />
|
|
4
|
+
export declare const Container: import("@emotion/styled").StyledComponent<{
|
|
5
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
6
|
+
as?: import("react").ElementType<any> | undefined;
|
|
7
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
@@ -9,5 +9,5 @@ var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
|
9
9
|
var Container = /*#__PURE__*/(0, _styled.default)("div", {
|
|
10
10
|
label: "Container",
|
|
11
11
|
target: "ee41tcw0"
|
|
12
|
-
})("position:relative;margin:0
|
|
12
|
+
})("position:relative;margin:0;& .treeRoot{box-sizing:border-box;padding:36px 0 0;min-width:200px;}& .dropTarget{background:var(--mdc-theme-on-background);}& .draggingSource{opacity:0.5;}& .placeholderContainer{position:relative;}");
|
|
13
13
|
exports.Container = Container;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Container","styled"],"sources":["styled.tsx"],"sourcesContent":["import styled from \"@emotion/styled\";\n\nexport const Container = styled(\"div\")`\n position: relative;\n margin: 0
|
|
1
|
+
{"version":3,"names":["Container","styled"],"sources":["styled.tsx"],"sourcesContent":["import styled from \"@emotion/styled\";\n\nexport const Container = styled(\"div\")`\n position: relative;\n margin: 0;\n\n & .treeRoot {\n box-sizing: border-box;\n padding: 36px 0 0;\n min-width: 200px;\n }\n\n & .dropTarget {\n background: var(--mdc-theme-on-background);\n }\n\n & .draggingSource {\n opacity: 0.5;\n }\n\n & .placeholderContainer {\n position: relative;\n }\n`;\n"],"mappings":";;;;;;;AAAA;AAEO,IAAMA,SAAS,oBAAGC,eAAM,EAAC,KAAK;EAAA;EAAA;AAAA,wOAqBpC;AAAC"}
|
package/contexts/folders.js
CHANGED
|
@@ -160,7 +160,7 @@ var FoldersProvider = function FoldersProvider(_ref) {
|
|
|
160
160
|
throw new Error((error === null || error === void 0 ? void 0 : error.message) || "Could not create folder");
|
|
161
161
|
case 10:
|
|
162
162
|
setFolders(function (folders) {
|
|
163
|
-
return (0, _objectSpread6.default)((0, _objectSpread6.default)({}, folders), {}, (0, _defineProperty2.default)({}, type, [].concat((0, _toConsumableArray2.default)(folders[type])
|
|
163
|
+
return (0, _objectSpread6.default)((0, _objectSpread6.default)({}, folders), {}, (0, _defineProperty2.default)({}, type, [data].concat((0, _toConsumableArray2.default)(folders[type]))));
|
|
164
164
|
});
|
|
165
165
|
return _context3.abrupt("return", data);
|
|
166
166
|
case 12:
|
package/contexts/folders.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["FoldersContext","React","createContext","undefined","defaultLoading","INIT","LIST","LIST_MORE","GET","CREATE","UPDATE","DELETE","FoldersProvider","children","client","useApolloClient","useState","Object","create","folders","setFolders","loading","setLoading","context","listFolders","type","Error","apolloFetchingHandler","loadingHandler","query","LIST_FOLDERS","variables","response","data","aco","error","message","prev","getFolder","id","GET_FOLDER","createFolder","folder","mutate","mutation","CREATE_FOLDER","updateFolder","title","slug","parentId","UPDATE_FOLDER","folderIndex","findIndex","f","typeFolders","deleteFolder","DELETE_FOLDER","updatedFolders","filter"],"sources":["folders.tsx"],"sourcesContent":["import React, { ReactNode, useState } from \"react\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\n\nimport { apolloFetchingHandler, loadingHandler } from \"~/handlers\";\n\nimport {\n CREATE_FOLDER,\n DELETE_FOLDER,\n GET_FOLDER,\n LIST_FOLDERS,\n UPDATE_FOLDER\n} from \"~/graphql/folders.gql\";\n\nimport {\n CreateFolderResponse,\n CreateFolderVariables,\n GetFolderResponse,\n GetFolderQueryVariables,\n DeleteFolderResponse,\n DeleteFolderVariables,\n FolderItem,\n ListFoldersQueryVariables,\n ListFoldersResponse,\n UpdateFolderResponse,\n UpdateFolderVariables,\n Loading,\n LoadingActions\n} from \"~/types\";\n\ninterface FoldersContext {\n folders: Record<string, FolderItem[]>;\n loading: Loading<LoadingActions>;\n listFolders: (type: string) => Promise<FolderItem[]>;\n getFolder: (id: string) => Promise<FolderItem>;\n createFolder: (folder: Omit<FolderItem, \"id\">) => Promise<FolderItem>;\n updateFolder: (folder: FolderItem) => Promise<FolderItem>;\n deleteFolder(folder: FolderItem): Promise<true>;\n}\n\nexport const FoldersContext = React.createContext<FoldersContext | undefined>(undefined);\n\ninterface Props {\n children: ReactNode;\n}\n\nconst defaultLoading: Record<LoadingActions, boolean> = {\n INIT: true,\n LIST: false,\n LIST_MORE: false,\n GET: false,\n CREATE: false,\n UPDATE: false,\n DELETE: false\n};\n\nexport const FoldersProvider = ({ children }: Props) => {\n const client = useApolloClient();\n const [folders, setFolders] = useState<Record<string, FolderItem[]>>(Object.create(null));\n const [loading, setLoading] = useState<Loading<LoadingActions>>(defaultLoading);\n\n const context: FoldersContext = {\n folders,\n loading,\n async listFolders(type: string) {\n if (!type) {\n throw new Error(\"Folder `type` is mandatory\");\n }\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"LIST\", setLoading),\n () =>\n client.query<ListFoldersResponse, ListFoldersQueryVariables>({\n query: LIST_FOLDERS,\n variables: { type }\n })\n );\n\n const { data, error } = response.aco.listFolders;\n\n if (!data) {\n throw new Error(error?.message || \"Could not fetch folders\");\n }\n\n setFolders(folders => ({\n ...folders,\n [type]: data || []\n }));\n\n setLoading(prev => ({\n ...prev,\n INIT: false\n }));\n\n return data;\n },\n\n async getFolder(id) {\n if (!id) {\n throw new Error(\"Folder `id` is mandatory\");\n }\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"GET\", setLoading),\n () =>\n client.query<GetFolderResponse, GetFolderQueryVariables>({\n query: GET_FOLDER,\n variables: { id }\n })\n );\n\n const { data, error } = response.aco.getFolder;\n\n if (!data) {\n throw new Error(error?.message || `Could not fetch folder with id: ${id}`);\n }\n\n return data;\n },\n\n async createFolder(folder) {\n const { type } = folder;\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"CREATE\", setLoading),\n () =>\n client.mutate<CreateFolderResponse, CreateFolderVariables>({\n mutation: CREATE_FOLDER,\n variables: { data: folder }\n })\n );\n\n if (!response) {\n throw new Error(\"Network error while creating folder\");\n }\n\n const { data, error } = response.aco.createFolder;\n\n if (!data) {\n throw new Error(error?.message || \"Could not create folder\");\n }\n\n setFolders(folders => ({ ...folders, [type]: [...folders[type], data] }));\n\n return data;\n },\n\n async updateFolder(folder) {\n const { id, type, title, slug, parentId } = folder;\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"UPDATE\", setLoading),\n () =>\n client.mutate<UpdateFolderResponse, UpdateFolderVariables>({\n mutation: UPDATE_FOLDER,\n variables: {\n id,\n data: {\n title,\n slug,\n parentId\n }\n }\n })\n );\n\n if (!response) {\n throw new Error(\"Network error while updating folder\");\n }\n\n const { data, error } = response.aco.updateFolder;\n\n if (!data) {\n throw new Error(error?.message || \"Could not update folder\");\n }\n\n setFolders(folders => {\n const folderIndex = folders[type].findIndex(f => f.id === id);\n if (folderIndex === -1) {\n return folders;\n }\n\n const typeFolders = folders[type];\n typeFolders[folderIndex] = data;\n\n return { ...folders, [type]: typeFolders };\n });\n\n return data;\n },\n\n async deleteFolder(folder) {\n const { id, type } = folder;\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"DELETE\", setLoading),\n () =>\n client.mutate<DeleteFolderResponse, DeleteFolderVariables>({\n mutation: DELETE_FOLDER,\n variables: { id }\n })\n );\n\n if (!response) {\n throw new Error(\"Network error while deleting folder\");\n }\n\n const { data, error } = response.aco.deleteFolder;\n\n if (!data) {\n throw new Error(error?.message || \"Could not delete folder\");\n }\n\n setFolders(folders => {\n const updatedFolders = folders[type].filter(f => f.id !== id);\n return { ...folders, [type]: updatedFolders };\n });\n\n return true;\n }\n };\n\n return <FoldersContext.Provider value={context}>{children}</FoldersContext.Provider>;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["FoldersContext","React","createContext","undefined","defaultLoading","INIT","LIST","LIST_MORE","GET","CREATE","UPDATE","DELETE","FoldersProvider","children","client","useApolloClient","useState","Object","create","folders","setFolders","loading","setLoading","context","listFolders","type","Error","apolloFetchingHandler","loadingHandler","query","LIST_FOLDERS","variables","response","data","aco","error","message","prev","getFolder","id","GET_FOLDER","createFolder","folder","mutate","mutation","CREATE_FOLDER","updateFolder","title","slug","parentId","UPDATE_FOLDER","folderIndex","findIndex","f","typeFolders","deleteFolder","DELETE_FOLDER","updatedFolders","filter"],"sources":["folders.tsx"],"sourcesContent":["import React, { ReactNode, useState } from \"react\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\n\nimport { apolloFetchingHandler, loadingHandler } from \"~/handlers\";\n\nimport {\n CREATE_FOLDER,\n DELETE_FOLDER,\n GET_FOLDER,\n LIST_FOLDERS,\n UPDATE_FOLDER\n} from \"~/graphql/folders.gql\";\n\nimport {\n CreateFolderResponse,\n CreateFolderVariables,\n GetFolderResponse,\n GetFolderQueryVariables,\n DeleteFolderResponse,\n DeleteFolderVariables,\n FolderItem,\n ListFoldersQueryVariables,\n ListFoldersResponse,\n UpdateFolderResponse,\n UpdateFolderVariables,\n Loading,\n LoadingActions\n} from \"~/types\";\n\ninterface FoldersContext {\n folders: Record<string, FolderItem[]>;\n loading: Loading<LoadingActions>;\n listFolders: (type: string) => Promise<FolderItem[]>;\n getFolder: (id: string) => Promise<FolderItem>;\n createFolder: (folder: Omit<FolderItem, \"id\">) => Promise<FolderItem>;\n updateFolder: (folder: FolderItem) => Promise<FolderItem>;\n deleteFolder(folder: FolderItem): Promise<true>;\n}\n\nexport const FoldersContext = React.createContext<FoldersContext | undefined>(undefined);\n\ninterface Props {\n children: ReactNode;\n}\n\nconst defaultLoading: Record<LoadingActions, boolean> = {\n INIT: true,\n LIST: false,\n LIST_MORE: false,\n GET: false,\n CREATE: false,\n UPDATE: false,\n DELETE: false\n};\n\nexport const FoldersProvider = ({ children }: Props) => {\n const client = useApolloClient();\n const [folders, setFolders] = useState<Record<string, FolderItem[]>>(Object.create(null));\n const [loading, setLoading] = useState<Loading<LoadingActions>>(defaultLoading);\n\n const context: FoldersContext = {\n folders,\n loading,\n async listFolders(type: string) {\n if (!type) {\n throw new Error(\"Folder `type` is mandatory\");\n }\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"LIST\", setLoading),\n () =>\n client.query<ListFoldersResponse, ListFoldersQueryVariables>({\n query: LIST_FOLDERS,\n variables: { type }\n })\n );\n\n const { data, error } = response.aco.listFolders;\n\n if (!data) {\n throw new Error(error?.message || \"Could not fetch folders\");\n }\n\n setFolders(folders => ({\n ...folders,\n [type]: data || []\n }));\n\n setLoading(prev => ({\n ...prev,\n INIT: false\n }));\n\n return data;\n },\n\n async getFolder(id) {\n if (!id) {\n throw new Error(\"Folder `id` is mandatory\");\n }\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"GET\", setLoading),\n () =>\n client.query<GetFolderResponse, GetFolderQueryVariables>({\n query: GET_FOLDER,\n variables: { id }\n })\n );\n\n const { data, error } = response.aco.getFolder;\n\n if (!data) {\n throw new Error(error?.message || `Could not fetch folder with id: ${id}`);\n }\n\n return data;\n },\n\n async createFolder(folder) {\n const { type } = folder;\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"CREATE\", setLoading),\n () =>\n client.mutate<CreateFolderResponse, CreateFolderVariables>({\n mutation: CREATE_FOLDER,\n variables: { data: folder }\n })\n );\n\n if (!response) {\n throw new Error(\"Network error while creating folder\");\n }\n\n const { data, error } = response.aco.createFolder;\n\n if (!data) {\n throw new Error(error?.message || \"Could not create folder\");\n }\n\n setFolders(folders => ({ ...folders, [type]: [data, ...folders[type]] }));\n\n return data;\n },\n\n async updateFolder(folder) {\n const { id, type, title, slug, parentId } = folder;\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"UPDATE\", setLoading),\n () =>\n client.mutate<UpdateFolderResponse, UpdateFolderVariables>({\n mutation: UPDATE_FOLDER,\n variables: {\n id,\n data: {\n title,\n slug,\n parentId\n }\n }\n })\n );\n\n if (!response) {\n throw new Error(\"Network error while updating folder\");\n }\n\n const { data, error } = response.aco.updateFolder;\n\n if (!data) {\n throw new Error(error?.message || \"Could not update folder\");\n }\n\n setFolders(folders => {\n const folderIndex = folders[type].findIndex(f => f.id === id);\n if (folderIndex === -1) {\n return folders;\n }\n\n const typeFolders = folders[type];\n typeFolders[folderIndex] = data;\n\n return { ...folders, [type]: typeFolders };\n });\n\n return data;\n },\n\n async deleteFolder(folder) {\n const { id, type } = folder;\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"DELETE\", setLoading),\n () =>\n client.mutate<DeleteFolderResponse, DeleteFolderVariables>({\n mutation: DELETE_FOLDER,\n variables: { id }\n })\n );\n\n if (!response) {\n throw new Error(\"Network error while deleting folder\");\n }\n\n const { data, error } = response.aco.deleteFolder;\n\n if (!data) {\n throw new Error(error?.message || \"Could not delete folder\");\n }\n\n setFolders(folders => {\n const updatedFolders = folders[type].filter(f => f.id !== id);\n return { ...folders, [type]: updatedFolders };\n });\n\n return true;\n }\n };\n\n return <FoldersContext.Provider value={context}>{children}</FoldersContext.Provider>;\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React, { ReactNode } from "react";
|
|
2
|
+
import { LinkItem, ListMeta, Loading, LoadingActions, Meta } from "../types";
|
|
3
|
+
interface LinksContext {
|
|
4
|
+
links: LinkItem[];
|
|
5
|
+
loading: Loading<LoadingActions>;
|
|
6
|
+
meta: Meta<ListMeta>;
|
|
7
|
+
listLinks: (type: string, limit?: number, after?: string) => Promise<LinkItem[]>;
|
|
8
|
+
getLink: (id: string, folderId: string) => Promise<LinkItem>;
|
|
9
|
+
createLink: (link: Omit<LinkItem, "linkId">) => Promise<LinkItem>;
|
|
10
|
+
updateLink: (link: LinkItem, contextFolderId: string) => Promise<LinkItem>;
|
|
11
|
+
deleteLink(link: LinkItem): Promise<true>;
|
|
12
|
+
}
|
|
13
|
+
export declare const LinksContext: React.Context<LinksContext | undefined>;
|
|
14
|
+
interface Props {
|
|
15
|
+
children: ReactNode;
|
|
16
|
+
}
|
|
17
|
+
export declare const LinksProvider: ({ children }: Props) => JSX.Element;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.LinksProvider = exports.LinksContext = void 0;
|
|
11
|
+
|
|
12
|
+
var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
|
|
13
|
+
|
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
+
|
|
16
|
+
var _objectSpread5 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
17
|
+
|
|
18
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
19
|
+
|
|
20
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
21
|
+
|
|
22
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
23
|
+
|
|
24
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
25
|
+
|
|
26
|
+
var _reactHooks = require("@apollo/react-hooks");
|
|
27
|
+
|
|
28
|
+
var _handlers = require("../handlers");
|
|
29
|
+
|
|
30
|
+
var _links = require("../graphql/links.gql");
|
|
31
|
+
|
|
32
|
+
var LinksContext = /*#__PURE__*/_react.default.createContext(undefined);
|
|
33
|
+
|
|
34
|
+
exports.LinksContext = LinksContext;
|
|
35
|
+
var defaultLoading = {
|
|
36
|
+
INIT: true,
|
|
37
|
+
LIST: false,
|
|
38
|
+
LIST_MORE: false,
|
|
39
|
+
GET: false,
|
|
40
|
+
CREATE: false,
|
|
41
|
+
UPDATE: false,
|
|
42
|
+
DELETE: false
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
var LinksProvider = function LinksProvider(_ref) {
|
|
46
|
+
var children = _ref.children;
|
|
47
|
+
var client = (0, _reactHooks.useApolloClient)();
|
|
48
|
+
|
|
49
|
+
var _useState = (0, _react.useState)([]),
|
|
50
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
51
|
+
links = _useState2[0],
|
|
52
|
+
setLinks = _useState2[1];
|
|
53
|
+
|
|
54
|
+
var _useState3 = (0, _react.useState)(defaultLoading),
|
|
55
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
56
|
+
loading = _useState4[0],
|
|
57
|
+
setLoading = _useState4[1];
|
|
58
|
+
|
|
59
|
+
var _useState5 = (0, _react.useState)(Object.create(null)),
|
|
60
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
61
|
+
meta = _useState6[0],
|
|
62
|
+
setMeta = _useState6[1];
|
|
63
|
+
|
|
64
|
+
var context = {
|
|
65
|
+
links: links,
|
|
66
|
+
loading: loading,
|
|
67
|
+
meta: meta,
|
|
68
|
+
listLinks: function listLinks(folderId) {
|
|
69
|
+
var _arguments = arguments;
|
|
70
|
+
return (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
|
|
71
|
+
var limit, after, action, _yield$apolloFetching, response, _response$folders$lis, data, responseMeta, error;
|
|
72
|
+
|
|
73
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
|
74
|
+
while (1) {
|
|
75
|
+
switch (_context.prev = _context.next) {
|
|
76
|
+
case 0:
|
|
77
|
+
limit = _arguments.length > 1 && _arguments[1] !== undefined ? _arguments[1] : 10;
|
|
78
|
+
after = _arguments.length > 2 ? _arguments[2] : undefined;
|
|
79
|
+
|
|
80
|
+
if (folderId) {
|
|
81
|
+
_context.next = 4;
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
throw new Error("Link `folderId` is mandatory");
|
|
86
|
+
|
|
87
|
+
case 4:
|
|
88
|
+
action = after ? "LIST_MORE" : "LIST";
|
|
89
|
+
_context.next = 7;
|
|
90
|
+
return (0, _handlers.apolloFetchingHandler)((0, _handlers.loadingHandler)(action, setLoading), function () {
|
|
91
|
+
return client.query({
|
|
92
|
+
query: _links.LIST_LINKS,
|
|
93
|
+
variables: {
|
|
94
|
+
folderId: folderId,
|
|
95
|
+
limit: limit,
|
|
96
|
+
after: after
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
case 7:
|
|
102
|
+
_yield$apolloFetching = _context.sent;
|
|
103
|
+
response = _yield$apolloFetching.data;
|
|
104
|
+
_response$folders$lis = response.folders.listLinks, data = _response$folders$lis.data, responseMeta = _response$folders$lis.meta, error = _response$folders$lis.error;
|
|
105
|
+
|
|
106
|
+
if (!(!data || !responseMeta)) {
|
|
107
|
+
_context.next = 12;
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
throw new Error((error === null || error === void 0 ? void 0 : error.message) || "Could not fetch links");
|
|
112
|
+
|
|
113
|
+
case 12:
|
|
114
|
+
setLinks(function (links) {
|
|
115
|
+
return (0, _toConsumableArray2.default)(new Set([].concat((0, _toConsumableArray2.default)(links), (0, _toConsumableArray2.default)(data))));
|
|
116
|
+
});
|
|
117
|
+
setMeta(function (meta) {
|
|
118
|
+
return (0, _objectSpread5.default)((0, _objectSpread5.default)({}, meta), {}, (0, _defineProperty2.default)({}, folderId, responseMeta));
|
|
119
|
+
});
|
|
120
|
+
setLoading(function (prev) {
|
|
121
|
+
return (0, _objectSpread5.default)((0, _objectSpread5.default)({}, prev), {}, {
|
|
122
|
+
INIT: false
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
return _context.abrupt("return", data);
|
|
126
|
+
|
|
127
|
+
case 16:
|
|
128
|
+
case "end":
|
|
129
|
+
return _context.stop();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}, _callee);
|
|
133
|
+
}))();
|
|
134
|
+
},
|
|
135
|
+
getLink: function getLink(id) {
|
|
136
|
+
return (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee2() {
|
|
137
|
+
var _yield$apolloFetching2, response, _response$folders$get, data, error;
|
|
138
|
+
|
|
139
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee2$(_context2) {
|
|
140
|
+
while (1) {
|
|
141
|
+
switch (_context2.prev = _context2.next) {
|
|
142
|
+
case 0:
|
|
143
|
+
if (id) {
|
|
144
|
+
_context2.next = 2;
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
throw new Error("Link `id` is mandatory");
|
|
149
|
+
|
|
150
|
+
case 2:
|
|
151
|
+
_context2.next = 4;
|
|
152
|
+
return (0, _handlers.apolloFetchingHandler)((0, _handlers.loadingHandler)("GET", setLoading), function () {
|
|
153
|
+
return client.query({
|
|
154
|
+
query: _links.GET_LINK,
|
|
155
|
+
variables: {
|
|
156
|
+
id: id
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
case 4:
|
|
162
|
+
_yield$apolloFetching2 = _context2.sent;
|
|
163
|
+
response = _yield$apolloFetching2.data;
|
|
164
|
+
_response$folders$get = response.folders.getLink, data = _response$folders$get.data, error = _response$folders$get.error;
|
|
165
|
+
|
|
166
|
+
if (data) {
|
|
167
|
+
_context2.next = 9;
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
throw new Error((error === null || error === void 0 ? void 0 : error.message) || "Could not fetch link with id: ".concat(id));
|
|
172
|
+
|
|
173
|
+
case 9:
|
|
174
|
+
return _context2.abrupt("return", data);
|
|
175
|
+
|
|
176
|
+
case 10:
|
|
177
|
+
case "end":
|
|
178
|
+
return _context2.stop();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}, _callee2);
|
|
182
|
+
}))();
|
|
183
|
+
},
|
|
184
|
+
createLink: function createLink(link) {
|
|
185
|
+
return (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee3() {
|
|
186
|
+
var folderId, _yield$apolloFetching3, response, _response$folders$cre, data, error;
|
|
187
|
+
|
|
188
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee3$(_context3) {
|
|
189
|
+
while (1) {
|
|
190
|
+
switch (_context3.prev = _context3.next) {
|
|
191
|
+
case 0:
|
|
192
|
+
folderId = link.folderId;
|
|
193
|
+
_context3.next = 3;
|
|
194
|
+
return (0, _handlers.apolloFetchingHandler)((0, _handlers.loadingHandler)("CREATE", setLoading), function () {
|
|
195
|
+
return client.mutate({
|
|
196
|
+
mutation: _links.CREATE_LINK,
|
|
197
|
+
variables: {
|
|
198
|
+
data: link
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
case 3:
|
|
204
|
+
_yield$apolloFetching3 = _context3.sent;
|
|
205
|
+
response = _yield$apolloFetching3.data;
|
|
206
|
+
|
|
207
|
+
if (response) {
|
|
208
|
+
_context3.next = 7;
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
throw new Error("Network error while creating link");
|
|
213
|
+
|
|
214
|
+
case 7:
|
|
215
|
+
_response$folders$cre = response.folders.createLink, data = _response$folders$cre.data, error = _response$folders$cre.error;
|
|
216
|
+
|
|
217
|
+
if (data) {
|
|
218
|
+
_context3.next = 10;
|
|
219
|
+
break;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
throw new Error((error === null || error === void 0 ? void 0 : error.message) || "Could not create link");
|
|
223
|
+
|
|
224
|
+
case 10:
|
|
225
|
+
setLinks(function (links) {
|
|
226
|
+
return [].concat((0, _toConsumableArray2.default)(links), [data]);
|
|
227
|
+
});
|
|
228
|
+
setMeta(function (meta) {
|
|
229
|
+
return (0, _objectSpread5.default)((0, _objectSpread5.default)({}, meta), {}, (0, _defineProperty2.default)({}, folderId, (0, _objectSpread5.default)((0, _objectSpread5.default)({}, meta[folderId]), {}, {
|
|
230
|
+
totalCount: ++meta[folderId].totalCount
|
|
231
|
+
})));
|
|
232
|
+
});
|
|
233
|
+
return _context3.abrupt("return", data);
|
|
234
|
+
|
|
235
|
+
case 13:
|
|
236
|
+
case "end":
|
|
237
|
+
return _context3.stop();
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}, _callee3);
|
|
241
|
+
}))();
|
|
242
|
+
},
|
|
243
|
+
updateLink: function updateLink(link, contextFolderId) {
|
|
244
|
+
return (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee4() {
|
|
245
|
+
var id, folderId, _yield$apolloFetching4, response, _response$folders$upd, data, error;
|
|
246
|
+
|
|
247
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee4$(_context4) {
|
|
248
|
+
while (1) {
|
|
249
|
+
switch (_context4.prev = _context4.next) {
|
|
250
|
+
case 0:
|
|
251
|
+
id = link.id, folderId = link.folderId;
|
|
252
|
+
_context4.next = 3;
|
|
253
|
+
return (0, _handlers.apolloFetchingHandler)((0, _handlers.loadingHandler)("UPDATE", setLoading), function () {
|
|
254
|
+
return client.mutate({
|
|
255
|
+
mutation: _links.UPDATE_LINK,
|
|
256
|
+
variables: {
|
|
257
|
+
id: id,
|
|
258
|
+
data: {
|
|
259
|
+
folderId: folderId
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
});
|
|
264
|
+
|
|
265
|
+
case 3:
|
|
266
|
+
_yield$apolloFetching4 = _context4.sent;
|
|
267
|
+
response = _yield$apolloFetching4.data;
|
|
268
|
+
|
|
269
|
+
if (response) {
|
|
270
|
+
_context4.next = 7;
|
|
271
|
+
break;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
throw new Error("Network error while updating link");
|
|
275
|
+
|
|
276
|
+
case 7:
|
|
277
|
+
_response$folders$upd = response.folders.updateLink, data = _response$folders$upd.data, error = _response$folders$upd.error;
|
|
278
|
+
|
|
279
|
+
if (data) {
|
|
280
|
+
_context4.next = 10;
|
|
281
|
+
break;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
throw new Error((error === null || error === void 0 ? void 0 : error.message) || "Could not update link");
|
|
285
|
+
|
|
286
|
+
case 10:
|
|
287
|
+
setLinks(function (links) {
|
|
288
|
+
return links.map(function (link) {
|
|
289
|
+
return link.id === id ? data : link;
|
|
290
|
+
}).filter(function (link) {
|
|
291
|
+
return link.folderId === contextFolderId;
|
|
292
|
+
});
|
|
293
|
+
});
|
|
294
|
+
return _context4.abrupt("return", data);
|
|
295
|
+
|
|
296
|
+
case 12:
|
|
297
|
+
case "end":
|
|
298
|
+
return _context4.stop();
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}, _callee4);
|
|
302
|
+
}))();
|
|
303
|
+
},
|
|
304
|
+
deleteLink: function deleteLink(link) {
|
|
305
|
+
return (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee5() {
|
|
306
|
+
var id, folderId, _yield$apolloFetching5, response, _response$folders$del, data, error;
|
|
307
|
+
|
|
308
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee5$(_context5) {
|
|
309
|
+
while (1) {
|
|
310
|
+
switch (_context5.prev = _context5.next) {
|
|
311
|
+
case 0:
|
|
312
|
+
id = link.id, folderId = link.folderId;
|
|
313
|
+
_context5.next = 3;
|
|
314
|
+
return (0, _handlers.apolloFetchingHandler)((0, _handlers.loadingHandler)("DELETE", setLoading), function () {
|
|
315
|
+
return client.mutate({
|
|
316
|
+
mutation: _links.DELETE_LINK,
|
|
317
|
+
variables: {
|
|
318
|
+
id: id
|
|
319
|
+
}
|
|
320
|
+
});
|
|
321
|
+
});
|
|
322
|
+
|
|
323
|
+
case 3:
|
|
324
|
+
_yield$apolloFetching5 = _context5.sent;
|
|
325
|
+
response = _yield$apolloFetching5.data;
|
|
326
|
+
|
|
327
|
+
if (response) {
|
|
328
|
+
_context5.next = 7;
|
|
329
|
+
break;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
throw new Error("Network error while deleting link");
|
|
333
|
+
|
|
334
|
+
case 7:
|
|
335
|
+
_response$folders$del = response.folders.deleteLink, data = _response$folders$del.data, error = _response$folders$del.error;
|
|
336
|
+
|
|
337
|
+
if (data) {
|
|
338
|
+
_context5.next = 10;
|
|
339
|
+
break;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
throw new Error((error === null || error === void 0 ? void 0 : error.message) || "Could not delete link");
|
|
343
|
+
|
|
344
|
+
case 10:
|
|
345
|
+
setLinks(function (links) {
|
|
346
|
+
return links.filter(function (link) {
|
|
347
|
+
return link.id !== id;
|
|
348
|
+
});
|
|
349
|
+
});
|
|
350
|
+
setMeta(function (meta) {
|
|
351
|
+
return (0, _objectSpread5.default)((0, _objectSpread5.default)({}, meta), {}, (0, _defineProperty2.default)({}, folderId, (0, _objectSpread5.default)((0, _objectSpread5.default)({}, meta[folderId]), {}, {
|
|
352
|
+
totalCount: --meta[folderId].totalCount
|
|
353
|
+
})));
|
|
354
|
+
});
|
|
355
|
+
return _context5.abrupt("return", true);
|
|
356
|
+
|
|
357
|
+
case 13:
|
|
358
|
+
case "end":
|
|
359
|
+
return _context5.stop();
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}, _callee5);
|
|
363
|
+
}))();
|
|
364
|
+
}
|
|
365
|
+
};
|
|
366
|
+
return /*#__PURE__*/_react.default.createElement(LinksContext.Provider, {
|
|
367
|
+
value: context
|
|
368
|
+
}, children);
|
|
369
|
+
};
|
|
370
|
+
|
|
371
|
+
exports.LinksProvider = LinksProvider;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["LinksContext","React","createContext","undefined","defaultLoading","INIT","LIST","LIST_MORE","GET","CREATE","UPDATE","DELETE","LinksProvider","children","client","useApolloClient","useState","links","setLinks","loading","setLoading","Object","create","meta","setMeta","context","listLinks","folderId","limit","after","Error","action","apolloFetchingHandler","loadingHandler","query","LIST_LINKS","variables","response","data","folders","responseMeta","error","message","Set","prev","getLink","id","GET_LINK","createLink","link","mutate","mutation","CREATE_LINK","totalCount","updateLink","contextFolderId","UPDATE_LINK","map","filter","deleteLink","DELETE_LINK"],"sources":["links.tsx"],"sourcesContent":["import React, { ReactNode, useState } from \"react\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\n\nimport { apolloFetchingHandler, loadingHandler } from \"~/handlers\";\n\nimport { CREATE_LINK, DELETE_LINK, GET_LINK, LIST_LINKS, UPDATE_LINK } from \"~/graphql/links.gql\";\n\nimport {\n CreateLinkResponse,\n CreateLinkVariables,\n DeleteLinkResponse,\n DeleteLinkVariables,\n GetLinkQueryVariables,\n GetLinkResponse,\n LinkItem,\n ListLinksQueryVariables,\n ListLinksResponse,\n ListMeta,\n Loading,\n LoadingActions,\n Meta,\n UpdateLinkResponse,\n UpdateLinkVariables\n} from \"~/types\";\n\ninterface LinksContext {\n links: LinkItem[];\n loading: Loading<LoadingActions>;\n meta: Meta<ListMeta>;\n listLinks: (type: string, limit?: number, after?: string) => Promise<LinkItem[]>;\n getLink: (id: string, folderId: string) => Promise<LinkItem>;\n createLink: (link: Omit<LinkItem, \"linkId\">) => Promise<LinkItem>;\n updateLink: (link: LinkItem, contextFolderId: string) => Promise<LinkItem>;\n deleteLink(link: LinkItem): Promise<true>;\n}\n\nexport const LinksContext = React.createContext<LinksContext | undefined>(undefined);\n\ninterface Props {\n children: ReactNode;\n}\n\nconst defaultLoading: Record<LoadingActions, boolean> = {\n INIT: true,\n LIST: false,\n LIST_MORE: false,\n GET: false,\n CREATE: false,\n UPDATE: false,\n DELETE: false\n};\n\nexport const LinksProvider = ({ children }: Props) => {\n const client = useApolloClient();\n const [links, setLinks] = useState<LinkItem[]>([]);\n const [loading, setLoading] = useState<Loading<LoadingActions>>(defaultLoading);\n const [meta, setMeta] = useState<Meta<ListMeta>>(Object.create(null));\n\n const context: LinksContext = {\n links,\n loading,\n meta,\n async listLinks(folderId: string, limit = 10, after?: string) {\n if (!folderId) {\n throw new Error(\"Link `folderId` is mandatory\");\n }\n\n const action = after ? \"LIST_MORE\" : \"LIST\";\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(action, setLoading),\n () =>\n client.query<ListLinksResponse, ListLinksQueryVariables>({\n query: LIST_LINKS,\n variables: { folderId, limit, after }\n })\n );\n\n const { data, meta: responseMeta, error } = response.folders.listLinks;\n\n if (!data || !responseMeta) {\n throw new Error(error?.message || \"Could not fetch links\");\n }\n\n setLinks(links => [...new Set([...links, ...data])]);\n\n setMeta(meta => ({\n ...meta,\n [folderId]: responseMeta\n }));\n\n setLoading(prev => {\n return {\n ...prev,\n INIT: false\n };\n });\n\n return data;\n },\n\n async getLink(id) {\n if (!id) {\n throw new Error(\"Link `id` is mandatory\");\n }\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"GET\", setLoading),\n () =>\n client.query<GetLinkResponse, GetLinkQueryVariables>({\n query: GET_LINK,\n variables: { id }\n })\n );\n\n const { data, error } = response.folders.getLink;\n\n if (!data) {\n throw new Error(error?.message || `Could not fetch link with id: ${id}`);\n }\n\n return data;\n },\n\n async createLink(link) {\n const { folderId } = link;\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"CREATE\", setLoading),\n () =>\n client.mutate<CreateLinkResponse, CreateLinkVariables>({\n mutation: CREATE_LINK,\n variables: { data: link }\n })\n );\n\n if (!response) {\n throw new Error(\"Network error while creating link\");\n }\n\n const { data, error } = response.folders.createLink;\n\n if (!data) {\n throw new Error(error?.message || \"Could not create link\");\n }\n\n setLinks(links => [...links, data]);\n\n setMeta(meta => ({\n ...meta,\n [folderId]: {\n ...meta[folderId],\n totalCount: ++meta[folderId].totalCount\n }\n }));\n\n return data;\n },\n\n async updateLink(link, contextFolderId) {\n const { id, folderId } = link;\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"UPDATE\", setLoading),\n () =>\n client.mutate<UpdateLinkResponse, UpdateLinkVariables>({\n mutation: UPDATE_LINK,\n variables: { id, data: { folderId } }\n })\n );\n\n if (!response) {\n throw new Error(\"Network error while updating link\");\n }\n\n const { data, error } = response.folders.updateLink;\n\n if (!data) {\n throw new Error(error?.message || \"Could not update link\");\n }\n\n setLinks(links =>\n links\n .map(link => (link.id === id ? data : link))\n .filter(link => link.folderId === contextFolderId)\n );\n\n return data;\n },\n\n async deleteLink(link) {\n const { id, folderId } = link;\n\n const { data: response } = await apolloFetchingHandler(\n loadingHandler(\"DELETE\", setLoading),\n () =>\n client.mutate<DeleteLinkResponse, DeleteLinkVariables>({\n mutation: DELETE_LINK,\n variables: { id }\n })\n );\n\n if (!response) {\n throw new Error(\"Network error while deleting link\");\n }\n\n const { data, error } = response.folders.deleteLink;\n\n if (!data) {\n throw new Error(error?.message || \"Could not delete link\");\n }\n\n setLinks(links => links.filter(link => link.id !== id));\n\n setMeta(meta => ({\n ...meta,\n [folderId]: {\n ...meta[folderId],\n totalCount: --meta[folderId].totalCount\n }\n }));\n\n return true;\n }\n };\n\n return <LinksContext.Provider value={context}>{children}</LinksContext.Provider>;\n};\n"],"mappings":"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"}
|
package/contexts/records.d.ts
CHANGED
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
import React, { ReactNode } from "react";
|
|
2
|
-
import { SearchRecordItem, ListMeta, Loading, LoadingActions, Meta } from "../types";
|
|
2
|
+
import { SearchRecordItem, ListMeta, Loading, LoadingActions, Meta, ListDbSort } from "../types";
|
|
3
3
|
interface SearchRecordsContext {
|
|
4
4
|
records: SearchRecordItem[];
|
|
5
5
|
loading: Loading<LoadingActions>;
|
|
6
6
|
meta: Meta<ListMeta>;
|
|
7
|
-
listRecords: (
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
listRecords: (params: {
|
|
8
|
+
type?: string;
|
|
9
|
+
folderId?: string;
|
|
10
|
+
limit?: number;
|
|
11
|
+
after?: string;
|
|
12
|
+
sort?: ListDbSort;
|
|
13
|
+
}) => Promise<SearchRecordItem[]>;
|
|
14
|
+
getRecord: (id: string) => Promise<SearchRecordItem>;
|
|
15
|
+
createRecord: (record: Omit<SearchRecordItem, "id">) => Promise<SearchRecordItem>;
|
|
16
|
+
updateRecord: (record: SearchRecordItem, contextFolderId?: string) => Promise<SearchRecordItem>;
|
|
17
|
+
deleteRecord(record: SearchRecordItem): Promise<true>;
|
|
12
18
|
}
|
|
13
19
|
export declare const SearchRecordsContext: React.Context<SearchRecordsContext | undefined>;
|
|
14
20
|
interface Props {
|