@ossy/sdk-react 0.1.4 → 0.1.6

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.
Files changed (102) hide show
  1. package/build/node_modules/ramda/es/always.js +1 -0
  2. package/build/node_modules/ramda/es/assocPath.js +1 -0
  3. package/build/node_modules/ramda/es/curry.js +1 -0
  4. package/build/node_modules/ramda/es/curryN.js +1 -0
  5. package/build/node_modules/ramda/es/equals.js +1 -0
  6. package/build/node_modules/ramda/es/findIndex.js +1 -0
  7. package/build/node_modules/ramda/es/internal/_arity.js +1 -0
  8. package/build/node_modules/ramda/es/internal/_arrayFromIterator.js +1 -0
  9. package/build/node_modules/ramda/es/internal/_arrayReduce.js +1 -0
  10. package/build/node_modules/ramda/es/internal/_assoc.js +1 -0
  11. package/build/node_modules/ramda/es/internal/_curry1.js +1 -0
  12. package/build/node_modules/ramda/es/internal/_curry2.js +1 -0
  13. package/build/node_modules/ramda/es/internal/_curry3.js +1 -0
  14. package/build/node_modules/ramda/es/internal/_curryN.js +1 -0
  15. package/build/node_modules/ramda/es/internal/_dispatchable.js +1 -0
  16. package/build/node_modules/ramda/es/internal/_equals.js +1 -0
  17. package/build/node_modules/ramda/es/internal/_functionName.js +1 -0
  18. package/build/node_modules/ramda/es/internal/_has.js +1 -0
  19. package/build/node_modules/ramda/es/internal/_includesWith.js +1 -0
  20. package/build/node_modules/ramda/es/internal/_isArguments.js +1 -0
  21. package/build/node_modules/ramda/es/internal/_isArray.js +1 -0
  22. package/build/node_modules/ramda/es/internal/_isInteger.js +1 -0
  23. package/build/node_modules/ramda/es/internal/_isPlaceholder.js +1 -0
  24. package/build/node_modules/ramda/es/internal/_isTransformer.js +1 -0
  25. package/build/node_modules/ramda/es/internal/_map.js +1 -0
  26. package/build/node_modules/ramda/es/internal/_nth.js +1 -0
  27. package/build/node_modules/ramda/es/internal/_objectIs.js +1 -0
  28. package/build/node_modules/ramda/es/internal/_path.js +1 -0
  29. package/build/node_modules/ramda/es/internal/_prop.js +1 -0
  30. package/build/node_modules/ramda/es/internal/_reduced.js +1 -0
  31. package/build/node_modules/ramda/es/internal/_xfBase.js +1 -0
  32. package/build/node_modules/ramda/es/internal/_xfindIndex.js +1 -0
  33. package/build/node_modules/ramda/es/internal/_xmap.js +1 -0
  34. package/build/node_modules/ramda/es/isNil.js +1 -0
  35. package/build/node_modules/ramda/es/keys.js +1 -0
  36. package/build/node_modules/ramda/es/lens.js +1 -0
  37. package/build/node_modules/ramda/es/lensPath.js +1 -0
  38. package/build/node_modules/ramda/es/map.js +1 -0
  39. package/build/node_modules/ramda/es/over.js +1 -0
  40. package/build/node_modules/ramda/es/path.js +1 -0
  41. package/build/node_modules/ramda/es/prop.js +1 -0
  42. package/build/node_modules/ramda/es/propEq.js +1 -0
  43. package/build/node_modules/ramda/es/remove.js +1 -0
  44. package/build/node_modules/ramda/es/set.js +1 -0
  45. package/build/node_modules/ramda/es/type.js +1 -0
  46. package/build/node_modules/tslib/tslib.es6.js +1 -0
  47. package/build/public.index.d.ts +108 -0
  48. package/build/sdk-react/src/Cache.js +1 -0
  49. package/build/sdk-react/src/WorkspaceProvider.js +1 -0
  50. package/build/sdk-react/src/asyncStatus.js +1 -0
  51. package/build/sdk-react/src/public.index.js +1 -0
  52. package/build/sdk-react/src/removeBy.js +1 -0
  53. package/build/sdk-react/src/replaceBy.js +1 -0
  54. package/build/sdk-react/src/useApiTokens.js +1 -0
  55. package/build/sdk-react/src/useAuthentication.js +1 -0
  56. package/build/sdk-react/src/useQuery.js +1 -0
  57. package/build/sdk-react/src/useResource.js +1 -0
  58. package/build/sdk-react/src/useResourceTemplate.js +1 -0
  59. package/build/sdk-react/src/useResources.js +1 -0
  60. package/build/sdk-react/src/useSdk.js +1 -0
  61. package/build/sdk-react/src/useUser.js +1 -0
  62. package/build/sdk-react/src/useUsers.js +1 -0
  63. package/build/sdk-react/src/useWorkspace.js +1 -0
  64. package/build/sdk-react/src/useWorkspaces.js +1 -0
  65. package/build/types/Cache.d.ts +10 -0
  66. package/build/types/WorkspaceProvider.d.ts +7 -0
  67. package/build/types/asyncStatus.d.ts +6 -0
  68. package/build/types/public.index.d.ts +13 -0
  69. package/build/types/removeBy.d.ts +1 -0
  70. package/build/types/replaceBy.d.ts +1 -0
  71. package/build/types/useApiTokens.d.ts +10 -0
  72. package/build/types/useAuthentication.d.ts +16 -0
  73. package/build/types/useQuery.d.ts +4 -0
  74. package/build/types/useResource.d.ts +8 -0
  75. package/build/types/useResourceTemplate.d.ts +1 -0
  76. package/build/types/useResources.d.ts +15 -0
  77. package/build/types/useSdk.d.ts +1 -0
  78. package/build/types/useUser.d.ts +5 -0
  79. package/build/types/useUsers.d.ts +5 -0
  80. package/build/types/useWorkspace.d.ts +7 -0
  81. package/build/types/useWorkspaces.d.ts +6 -0
  82. package/package.json +6 -2
  83. package/CHANGELOG.md +0 -166
  84. package/rollup.config.js +0 -44
  85. package/src/Cache.tsx +0 -76
  86. package/src/WorkspaceProvider.tsx +0 -27
  87. package/src/asyncStatus.ts +0 -6
  88. package/src/public.index.ts +0 -13
  89. package/src/removeBy.js +0 -7
  90. package/src/replaceBy.js +0 -6
  91. package/src/useApiTokens.ts +0 -63
  92. package/src/useAuthentication.ts +0 -105
  93. package/src/useQuery.ts +0 -49
  94. package/src/useResource.ts +0 -91
  95. package/src/useResourceTemplate.ts +0 -8
  96. package/src/useResources.ts +0 -163
  97. package/src/useSdk.ts +0 -7
  98. package/src/useUser.ts +0 -55
  99. package/src/useUsers.ts +0 -38
  100. package/src/useWorkspace.ts +0 -67
  101. package/src/useWorkspaces.ts +0 -49
  102. package/tsconfig.json +0 -27
package/CHANGELOG.md DELETED
@@ -1,166 +0,0 @@
1
- # Change Log
2
-
3
- All notable changes to this project will be documented in this file.
4
- See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
-
6
- ## 0.1.4 (2025-10-31)
7
-
8
-
9
- ### Bug Fixes
10
-
11
- * **app:** add @babel/preset-env ([#7](https://github.com/ossy-se/packages/issues/7)) ([252b41a](https://github.com/ossy-se/packages/commit/252b41a6d4e3d7d3750661091c97186b0d9cdde2))
12
-
13
-
14
-
15
-
16
-
17
- ## 0.1.3 (2025-10-31)
18
-
19
- **Note:** Version bump only for package @ossy/sdk-react
20
-
21
-
22
-
23
-
24
-
25
- ## 0.1.2 (2025-10-31)
26
-
27
- **Note:** Version bump only for package @ossy/sdk-react
28
-
29
-
30
-
31
-
32
-
33
- ## 0.1.1 (2025-10-31)
34
-
35
- **Note:** Version bump only for package @ossy/sdk-react
36
-
37
-
38
-
39
-
40
-
41
- # 0.1.0 (2025-10-30)
42
-
43
-
44
- ### Features
45
-
46
- * **sdk:** get current workspace ([#4](https://github.com/ossy-se/packages/issues/4)) ([afce7d5](https://github.com/ossy-se/packages/commit/afce7d5787af42691f62c9eba672ea1be000e19e))
47
-
48
-
49
-
50
-
51
-
52
- ## 0.0.16 (2025-10-30)
53
-
54
- **Note:** Version bump only for package @ossy/sdk-react
55
-
56
-
57
-
58
-
59
-
60
- ## 0.0.15 (2025-10-27)
61
-
62
- **Note:** Version bump only for package @ossy/sdk-react
63
-
64
-
65
-
66
-
67
-
68
- ## 0.0.14 (2025-10-27)
69
-
70
- **Note:** Version bump only for package @ossy/sdk-react
71
-
72
-
73
-
74
-
75
-
76
- ## 0.0.13 (2025-10-27)
77
-
78
- **Note:** Version bump only for package @ossy/sdk-react
79
-
80
-
81
-
82
-
83
-
84
- ## 0.0.12 (2025-10-27)
85
-
86
- **Note:** Version bump only for package @ossy/sdk-react
87
-
88
-
89
-
90
-
91
-
92
- ## 0.0.11 (2025-10-27)
93
-
94
- **Note:** Version bump only for package @ossy/sdk-react
95
-
96
-
97
-
98
-
99
-
100
- ## 0.0.10 (2025-10-25)
101
-
102
- **Note:** Version bump only for package @ossy/sdk-react
103
-
104
-
105
-
106
-
107
-
108
- ## 0.0.9 (2025-10-25)
109
-
110
- **Note:** Version bump only for package @ossy/sdk-react
111
-
112
-
113
-
114
-
115
-
116
- ## 0.0.8 (2025-10-25)
117
-
118
- **Note:** Version bump only for package @ossy/sdk-react
119
-
120
-
121
-
122
-
123
-
124
- ## 0.0.7 (2025-10-25)
125
-
126
- **Note:** Version bump only for package @ossy/sdk-react
127
-
128
-
129
-
130
-
131
-
132
- ## 0.0.6 (2025-10-25)
133
-
134
- **Note:** Version bump only for package @ossy/sdk-react
135
-
136
-
137
-
138
-
139
-
140
- ## 0.0.5 (2025-10-25)
141
-
142
- **Note:** Version bump only for package @ossy/sdk-react
143
-
144
-
145
-
146
-
147
-
148
- ## 0.0.4 (2025-10-25)
149
-
150
- **Note:** Version bump only for package @ossy/sdk-react
151
-
152
-
153
-
154
-
155
-
156
- ## 0.0.3 (2025-10-25)
157
-
158
- **Note:** Version bump only for package @ossy/sdk-react
159
-
160
-
161
-
162
-
163
-
164
- ## 0.0.2 (2025-10-25)
165
-
166
- **Note:** Version bump only for package @ossy/sdk-react
package/rollup.config.js DELETED
@@ -1,44 +0,0 @@
1
- import babel from '@rollup/plugin-babel'
2
- import { nodeResolve as resolveDependencies } from '@rollup/plugin-node-resolve'
3
- import resolveCommonJsDependencies from '@rollup/plugin-commonjs'
4
- import removeOwnPeerDependencies from 'rollup-plugin-peer-deps-external'
5
- import minifyJS from '@rollup/plugin-terser'
6
- import typescript from '@rollup/plugin-typescript'
7
- import preserveDirectives from "rollup-plugin-preserve-directives"
8
- import { dts } from "rollup-plugin-dts"
9
- import pkg from './package.json' with { type: 'json' };
10
-
11
- export default [
12
- {
13
- input: pkg.source,
14
- output: [
15
- {
16
- dir: 'build',
17
- preserveModules: true,
18
- format: 'esm'
19
- }
20
- ],
21
- plugins: [
22
- resolveCommonJsDependencies(),
23
- resolveDependencies(),
24
- removeOwnPeerDependencies(),
25
- babel({
26
- exclude: ['**/node_modules/**/*'],
27
- presets: ['@babel/preset-react']
28
- }),
29
- minifyJS(),
30
- preserveDirectives(),
31
- typescript({
32
- tsconfig: "./tsconfig.json",
33
- outDir: 'build',
34
- }),
35
- ]
36
- },
37
- {
38
- input: "build/types/public.index.d.ts",
39
- output: [{ file: "build/public.index.d.ts", format: "es" }],
40
- plugins: [
41
- dts()
42
- ],
43
- },
44
- ]
package/src/Cache.tsx DELETED
@@ -1,76 +0,0 @@
1
- import React, {
2
- createContext,
3
- useReducer,
4
- useContext,
5
- useCallback
6
- } from 'react'
7
-
8
- const getInitialState = () => ({})
9
- export const CacheContext = createContext<any>({})
10
-
11
- const Actions = {
12
- Set: 'SET'
13
- }
14
-
15
- const createReducer = ({ set, get }: { set: any, get: any }) => (
16
- state = getInitialState(),
17
- action: any
18
- ) => {
19
- switch (action.type) {
20
-
21
- case Actions.Set: {
22
- let data
23
-
24
- if (typeof action.data === 'function') {
25
- const previousValue = get(action.cachePath, state)
26
- data = action.data(previousValue)
27
- } else {
28
- data = action.data
29
- }
30
-
31
- return set(action.cachePath, data, state)
32
- }
33
-
34
- default:
35
- return ({ ...state })
36
-
37
- }
38
- }
39
-
40
- export const createCache = ({ get: _get, set: _set }: { get: any, set: any}) => (props: any) => {
41
-
42
- const [state, updateState] = useReducer(
43
- createReducer({ set: _set, get: _get }),
44
- getInitialState()
45
- )
46
-
47
- const set = useCallback((cachePath: any) => (data: any) => {
48
- updateState({ type: Actions.Set, cachePath, data })
49
- }, [updateState])
50
-
51
- const get = useCallback((cachePath: any) =>
52
- _get(cachePath, state),
53
- [state, _get]
54
- )
55
-
56
- return (
57
- <CacheContext.Provider value={{ get, set }} {...props} />
58
- )
59
- }
60
-
61
- export const useCache = (cachePath: any, defaultValue?: any) => {
62
- // TODO: Add default value to context here, otherwise it will be undefined in the set((data) => { ... }) function
63
- const { get, set } = useContext(CacheContext)
64
-
65
- const getData = () => {
66
- const data = get(cachePath)
67
- return data === undefined || data === null
68
- ? defaultValue
69
- : data
70
- }
71
-
72
- return ({
73
- data: getData(),
74
- set: set(cachePath)
75
- })
76
- }
@@ -1,27 +0,0 @@
1
- import React, { createContext, PropsWithChildren } from 'react'
2
- import { createCache } from './Cache'
3
- import { path, set, lensPath } from 'ramda'
4
- import { type SDK } from '@ossy/sdk'
5
-
6
- export const Context = createContext<Config>({} as Config)
7
-
8
- const Cache = createCache({
9
- get: path,
10
- set: (path: any, value: any, data: any) => set(lensPath(path), value, data)
11
- })
12
-
13
- export interface Config {
14
- sdk: SDK
15
- }
16
-
17
- export const WorkspaceProvider = ({ sdk, children }: PropsWithChildren<Config>) => {
18
- return (
19
- <Cache>
20
- <Context.Provider value={{ sdk }}>
21
- {children}
22
- </Context.Provider>
23
- </Cache>
24
- )
25
- }
26
-
27
-
@@ -1,6 +0,0 @@
1
- export const AsyncStatus = {
2
- NotInitialized: 'NotInitialized',
3
- Loading: 'Loading',
4
- Success: 'Success',
5
- Error: 'Error'
6
- }
@@ -1,13 +0,0 @@
1
- export * from './asyncStatus'
2
- export * from './useApiTokens'
3
- export * from './useAuthentication'
4
- export * from './useWorkspace'
5
- export * from './useWorkspaces'
6
- export * from './useQuery'
7
- export * from './useResource'
8
- export * from './useResourceTemplate'
9
- export * from './useResources'
10
- export * from './WorkspaceProvider'
11
- export * from './useSdk'
12
- export * from './useUser'
13
- export * from './useUsers'
package/src/removeBy.js DELETED
@@ -1,7 +0,0 @@
1
- import { remove, findIndex, propEq, curry } from 'ramda'
2
-
3
- export const removeBy = curry((prop, propValue, list) => {
4
- const index = findIndex(propEq(prop, propValue), list)
5
- const temp = index === -1 ? list : remove(index, 1, list)
6
- return temp
7
- })
package/src/replaceBy.js DELETED
@@ -1,6 +0,0 @@
1
- import { curry, map } from 'ramda'
2
-
3
- export const replaceBy = curry((prop, item, list) => map(
4
- oldItem => oldItem[prop] === item[prop] ? item : oldItem,
5
- list
6
- ))
@@ -1,63 +0,0 @@
1
- import { useCallback, useEffect } from 'react'
2
- import { useCache } from './Cache'
3
- import { AsyncStatus } from './asyncStatus'
4
- import { useSdk } from './useSdk'
5
- import { removeBy } from './removeBy'
6
-
7
- const statusPath = ['apiTokens', 'status']
8
- const dataPath = ['apiTokens', 'data']
9
-
10
- export const useApiTokens = () => {
11
- const sdk = useSdk()
12
-
13
- const {
14
- data: status = AsyncStatus.NotInitialized,
15
- set: setStatus
16
- } = useCache(statusPath)
17
-
18
- const {
19
- data: tokens = [],
20
- set: setTokens
21
- } = useCache(dataPath)
22
-
23
- const createApiToken = useCallback(
24
- (token: {
25
- name: string;
26
- description: string;
27
- expiresAt: string;
28
- }) => sdk.apiTokens.create(token)
29
- .then((token: any) => {
30
- setTokens((tokens: any[]) => [...tokens, token])
31
- return token
32
- }),
33
- [sdk]
34
- )
35
-
36
- const invalidateApiToken = useCallback(
37
- (id: string) => sdk.apiTokens.invalidate({ id })
38
- .then(() => setTokens((tokens: any[]) => removeBy('id', id, tokens))),
39
- [sdk]
40
- )
41
-
42
- const loadApiTokens = useCallback(() => {
43
- setStatus(AsyncStatus.Loading)
44
- sdk.apiTokens.list()
45
- .then((tokens: any[]) => {
46
- setTokens(tokens)
47
- setStatus(AsyncStatus.Success)
48
- })
49
- .catch(() => { setStatus(AsyncStatus.Error) })
50
- }, [sdk])
51
-
52
- useEffect(() => {
53
- if (status !== AsyncStatus.NotInitialized) return
54
- loadApiTokens()
55
- }, [status])
56
-
57
- return {
58
- status,
59
- tokens,
60
- createApiToken,
61
- invalidateApiToken,
62
- }
63
- }
@@ -1,105 +0,0 @@
1
- import { useCallback, useEffect } from 'react'
2
- import { useCache } from './Cache'
3
- import { useSdk } from './useSdk'
4
-
5
- export const AuthenticationStatus = {
6
- AuthenticationError: 'AuthenticationError',
7
- NotInitialized: 'NotInitialized',
8
- NotAuthenticated: 'NotAuthenticated',
9
- Verifying: 'Verifying',
10
- Authenticated: 'Authenticated',
11
- VerifySignIn: 'VerifySignIn'
12
- }
13
-
14
- const statusPath = ['auth', 'status']
15
-
16
- export const useAuthentication = () => {
17
- const sdk = useSdk()
18
-
19
- const {
20
- data: status = AuthenticationStatus.NotInitialized,
21
- set: setStatus
22
- } = useCache(statusPath)
23
-
24
- const signUp = useCallback(
25
- (email: string) => {
26
- setStatus(() => AuthenticationStatus.Verifying)
27
- return sdk.auth.signUp({ email })
28
- .then(() => setStatus(AuthenticationStatus.VerifySignIn))
29
- .catch((error: any) => {
30
- setStatus(AuthenticationStatus.AuthenticationError)
31
- return Promise.reject(error)
32
- })
33
- },
34
- [sdk]
35
- )
36
-
37
- const signIn = useCallback(
38
- (email: any) => {
39
- setStatus(() => AuthenticationStatus.Verifying)
40
- return sdk.auth.signIn(email)
41
- .then(() => setStatus(AuthenticationStatus.VerifySignIn))
42
- .catch((error: any) => {
43
- setStatus(AuthenticationStatus.AuthenticationError)
44
- return Promise.reject(error)
45
- })
46
- },
47
- [sdk]
48
- )
49
-
50
- const verifySignIn = useCallback(
51
- (token: string) => {
52
- setStatus(() => AuthenticationStatus.Verifying)
53
- return sdk.auth.verifySignIn({ token })
54
- .then(() => setStatus(AuthenticationStatus.Authenticated))
55
- .catch((error: any) => {
56
- setStatus(AuthenticationStatus.AuthenticationError)
57
- return Promise.reject(error)
58
- })
59
- },
60
- [sdk]
61
- )
62
-
63
- const verifyInvitation = useCallback(
64
- (workspaceId: string, token: string) => {
65
- setStatus(() => AuthenticationStatus.Verifying)
66
- return sdk.auth.verifyInvitation({ workspaceId, token})
67
- .then(() => setStatus(AuthenticationStatus.Authenticated))
68
- .catch((error: any) => {
69
- setStatus(AuthenticationStatus.AuthenticationError)
70
- return Promise.reject(error)
71
- })
72
- },
73
- [sdk]
74
- )
75
-
76
- const signOff = useCallback(
77
- () => sdk.auth.signOff()
78
- .then(() => setStatus(AuthenticationStatus.NotAuthenticated)),
79
- [sdk]
80
- )
81
-
82
- useEffect(() => {
83
- if (status !== AuthenticationStatus.NotInitialized) return
84
- setStatus(() => AuthenticationStatus.Verifying)
85
-
86
- sdk.auth.getAuthenticatedUser()
87
- .then((user: any) => {
88
- if (!user) return Promise.reject()
89
- setStatus(() => AuthenticationStatus.Authenticated)
90
- })
91
- .catch(() => {
92
- setStatus(() => AuthenticationStatus.NotAuthenticated)
93
- })
94
-
95
- }, [status])
96
-
97
- return {
98
- status,
99
- signUp,
100
- signIn,
101
- signOff,
102
- verifySignIn,
103
- verifyInvitation
104
- }
105
- }
package/src/useQuery.ts DELETED
@@ -1,49 +0,0 @@
1
- import { useCallback, useMemo, useEffect } from 'react'
2
- import { useCache } from './Cache'
3
- import { AsyncStatus } from './asyncStatus'
4
- import { useSdk } from './useSdk'
5
-
6
- export const useQuery = (incomingQuery: any) => {
7
- const sdk = useSdk()
8
- const workspaceId = sdk.workspaceId
9
- const queryString = new URLSearchParams(incomingQuery).toString()
10
-
11
- const statusCachePath = useMemo(
12
- () => [workspaceId, 'queries', queryString, 'status'],
13
- [workspaceId, queryString]
14
- )
15
-
16
- const dataCachePath = useMemo(
17
- () => [workspaceId, 'queries', queryString, 'data'],
18
- [workspaceId, queryString]
19
- )
20
-
21
- const {
22
- data: status,
23
- set: setStatus
24
- } = useCache(statusCachePath, AsyncStatus.NotInitialized)
25
-
26
- const {
27
- data: resources,
28
- set: setResources
29
- } = useCache(dataCachePath, [])
30
-
31
- const loadResources = useCallback((query: any) => {
32
- setStatus(AsyncStatus.Loading)
33
- sdk.resources.get(query)
34
- .then((resources: any) => {
35
- setStatus(AsyncStatus.Success)
36
- setResources(resources)
37
- })
38
- .catch(() => { setStatus(AsyncStatus.Error) })
39
- }, [sdk])
40
-
41
- useEffect(() => {
42
- if (!workspaceId) return
43
- if (!incomingQuery) return
44
- if (status !== AsyncStatus.NotInitialized) return
45
- loadResources(incomingQuery)
46
- }, [workspaceId, incomingQuery, status])
47
-
48
- return { status, resources }
49
- }
@@ -1,91 +0,0 @@
1
- import { useCallback, useMemo, useEffect } from 'react'
2
- import { useCache } from './Cache'
3
- import { AsyncStatus } from './asyncStatus'
4
- import { useResources } from './useResources'
5
- import { useSdk } from './useSdk'
6
-
7
- export const useResource = (id: string) => {
8
- const sdk = useSdk()
9
- const workspaceId = sdk.workspaceId
10
-
11
- const statusCachePath = useMemo(
12
- () => ['resource', workspaceId, id, 'status'],
13
- [id, workspaceId]
14
- )
15
-
16
- const dataCachePath = useMemo(
17
- () => ['resource', workspaceId, id, 'data'],
18
- [id, workspaceId]
19
- )
20
-
21
- const {
22
- data: status = AsyncStatus.NotInitialized,
23
- set: setStatus
24
- } = useCache(statusCachePath)
25
-
26
- const {
27
- data: resource = {},
28
- set: setResource
29
- } = useCache(dataCachePath)
30
-
31
- const {
32
- loadResource: _loadResource,
33
- removeResource: _removeResource,
34
- updateResourceContent: _updateResourceContent,
35
- renameResource: _renameResource
36
- } = useResources()
37
-
38
- const loadResource = useCallback(() => {
39
- setStatus(AsyncStatus.Loading)
40
- setResource({})
41
- _loadResource(id)
42
- .then((resource: any) => {
43
- setStatus(AsyncStatus.Success)
44
- setResource(resource)
45
- })
46
- .catch(() => {
47
- setStatus(AsyncStatus.Error)
48
- setResource({})
49
- })
50
- }, [id, _loadResource])
51
-
52
- const removeResource = useCallback(
53
- () => _removeResource(id)
54
- .then(() => {
55
- setStatus(AsyncStatus.NotInitialized)
56
- setResource({})
57
- }),
58
- [id, _removeResource]
59
- )
60
-
61
- const updateResourceContent = useCallback(
62
- (content: any) => _updateResourceContent(id, content)
63
- .then((resource: any) => setResource(resource)),
64
- [id, _updateResourceContent]
65
- )
66
-
67
- const renameResource = useCallback(
68
- (name: string) => _renameResource(id, name)
69
- .then((resource: any) => setResource(resource)),
70
- [id, _renameResource]
71
- )
72
-
73
- useEffect(() => {
74
-
75
- if (!workspaceId) return
76
- if (!id) return
77
- if (status !== AsyncStatus.NotInitialized) return
78
-
79
- loadResource()
80
-
81
- }, [workspaceId, id, loadResource])
82
-
83
- return {
84
- status,
85
- resource,
86
- loadResource,
87
- removeResource,
88
- updateResourceContent,
89
- renameResource
90
- }
91
- }
@@ -1,8 +0,0 @@
1
- import { useWorkspace } from './useWorkspace'
2
-
3
- export const useResourceTemplate = (id: string) => {
4
- const { workspace } = useWorkspace()
5
- // TODO: workspace.resourceTemplates might not exist yet
6
- const template = workspace.resourceTemplates.find((template: { id: string }) => template.id === id)
7
- return template
8
- }