@comapeo/core-react 6.1.1 → 6.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commonjs/hooks/projects.d.ts +43 -26
- package/dist/commonjs/hooks/projects.js +23 -0
- package/dist/commonjs/index.d.ts +1 -1
- package/dist/commonjs/index.js +2 -1
- package/dist/commonjs/lib/react-query/projects.d.ts +15 -9
- package/dist/commonjs/lib/react-query/projects.js +17 -0
- package/dist/esm/hooks/projects.d.ts +43 -26
- package/dist/esm/hooks/projects.js +23 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/lib/react-query/projects.d.ts +15 -9
- package/dist/esm/lib/react-query/projects.js +16 -0
- package/package.json +26 -25
|
@@ -395,37 +395,54 @@ export declare function useUpdateProjectSettings({ projectId }: {
|
|
|
395
395
|
projectId: string;
|
|
396
396
|
}): {
|
|
397
397
|
error: Error;
|
|
398
|
-
mutate: import("@tanstack/react-query").UseMutateFunction<import("@comapeo/core/dist/mapeo-project.js", { with: { "resolution-mode": "import" } }).EditableProjectSettings, Error, {
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
}, unknown>;
|
|
405
|
-
mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<import("@comapeo/core/dist/mapeo-project.js", { with: { "resolution-mode": "import" } }).EditableProjectSettings, Error, {
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
398
|
+
mutate: import("@tanstack/react-query").UseMutateFunction<import("@comapeo/core/dist/mapeo-project.js", { with: { "resolution-mode": "import" } }).EditableProjectSettings, Error, import("@comapeo/core/dist/mapeo-project.js", { with: { "resolution-mode": "import" } }).EditableProjectSettings, unknown>;
|
|
399
|
+
mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<import("@comapeo/core/dist/mapeo-project.js", { with: { "resolution-mode": "import" } }).EditableProjectSettings, Error, import("@comapeo/core/dist/mapeo-project.js", { with: { "resolution-mode": "import" } }).EditableProjectSettings, unknown>;
|
|
400
|
+
reset: () => void;
|
|
401
|
+
status: "error";
|
|
402
|
+
} | {
|
|
403
|
+
error: null;
|
|
404
|
+
mutate: import("@tanstack/react-query").UseMutateFunction<import("@comapeo/core/dist/mapeo-project.js", { with: { "resolution-mode": "import" } }).EditableProjectSettings, Error, import("@comapeo/core/dist/mapeo-project.js", { with: { "resolution-mode": "import" } }).EditableProjectSettings, unknown>;
|
|
405
|
+
mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<import("@comapeo/core/dist/mapeo-project.js", { with: { "resolution-mode": "import" } }).EditableProjectSettings, Error, import("@comapeo/core/dist/mapeo-project.js", { with: { "resolution-mode": "import" } }).EditableProjectSettings, unknown>;
|
|
406
|
+
reset: () => void;
|
|
407
|
+
status: "pending" | "success" | "idle";
|
|
408
|
+
};
|
|
409
|
+
/**
|
|
410
|
+
* Change a project member's role.
|
|
411
|
+
*
|
|
412
|
+
* @param opts.projectId Project public ID
|
|
413
|
+
*
|
|
414
|
+
* @example
|
|
415
|
+
* ```tsx
|
|
416
|
+
* function BasicExample() {
|
|
417
|
+
* const { mutate } = useChangeMemberRole({ projectId: '...' })
|
|
418
|
+
* // Use one of: COORDINATOR_ROLE_ID, MEMBER_ROLE_ID, BLOCKED_ROLE_ID
|
|
419
|
+
* mutate({ deviceId: '...', roleId: COORDINATOR_ROLE_ID })
|
|
420
|
+
* }
|
|
421
|
+
* ```
|
|
422
|
+
*/
|
|
423
|
+
export declare function useChangeMemberRole({ projectId }: {
|
|
424
|
+
projectId: string;
|
|
425
|
+
}): {
|
|
426
|
+
error: Error;
|
|
427
|
+
mutate: import("@tanstack/react-query").UseMutateFunction<void, Error, {
|
|
428
|
+
deviceId: string;
|
|
429
|
+
roleId: import("@comapeo/core", { with: { "resolution-mode": "import" } }).MemberApi.RoleIdAssignableToOthers;
|
|
430
|
+
}, unknown>;
|
|
431
|
+
mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<void, Error, {
|
|
432
|
+
deviceId: string;
|
|
433
|
+
roleId: import("@comapeo/core", { with: { "resolution-mode": "import" } }).MemberApi.RoleIdAssignableToOthers;
|
|
411
434
|
}, unknown>;
|
|
412
435
|
reset: () => void;
|
|
413
436
|
status: "error";
|
|
414
437
|
} | {
|
|
415
438
|
error: null;
|
|
416
|
-
mutate: import("@tanstack/react-query").UseMutateFunction<
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<import("@comapeo/core/dist/mapeo-project.js", { with: { "resolution-mode": "import" } }).EditableProjectSettings, Error, {
|
|
424
|
-
name?: import("@comapeo/schema", { with: { "resolution-mode": "import" } }).ProjectSettings["name"];
|
|
425
|
-
configMetadata?: import("@comapeo/schema", { with: { "resolution-mode": "import" } }).ProjectSettings["configMetadata"];
|
|
426
|
-
defaultPresets?: import("@comapeo/schema", { with: { "resolution-mode": "import" } }).ProjectSettings["defaultPresets"];
|
|
427
|
-
projectColor?: import("@comapeo/schema", { with: { "resolution-mode": "import" } }).ProjectSettings["projectColor"];
|
|
428
|
-
projectDescription?: import("@comapeo/schema", { with: { "resolution-mode": "import" } }).ProjectSettings["projectDescription"];
|
|
439
|
+
mutate: import("@tanstack/react-query").UseMutateFunction<void, Error, {
|
|
440
|
+
deviceId: string;
|
|
441
|
+
roleId: import("@comapeo/core", { with: { "resolution-mode": "import" } }).MemberApi.RoleIdAssignableToOthers;
|
|
442
|
+
}, unknown>;
|
|
443
|
+
mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<void, Error, {
|
|
444
|
+
deviceId: string;
|
|
445
|
+
roleId: import("@comapeo/core", { with: { "resolution-mode": "import" } }).MemberApi.RoleIdAssignableToOthers;
|
|
429
446
|
}, unknown>;
|
|
430
447
|
reset: () => void;
|
|
431
448
|
status: "pending" | "success" | "idle";
|
|
@@ -15,6 +15,7 @@ exports.useCreateProject = useCreateProject;
|
|
|
15
15
|
exports.useLeaveProject = useLeaveProject;
|
|
16
16
|
exports.useImportProjectConfig = useImportProjectConfig;
|
|
17
17
|
exports.useUpdateProjectSettings = useUpdateProjectSettings;
|
|
18
|
+
exports.useChangeMemberRole = useChangeMemberRole;
|
|
18
19
|
exports.useCreateBlob = useCreateBlob;
|
|
19
20
|
exports.useSyncState = useSyncState;
|
|
20
21
|
exports.useDataSyncProgress = useDataSyncProgress;
|
|
@@ -368,6 +369,28 @@ function useUpdateProjectSettings({ projectId }) {
|
|
|
368
369
|
? { error, mutate, mutateAsync, reset, status }
|
|
369
370
|
: { error: null, mutate, mutateAsync, reset, status };
|
|
370
371
|
}
|
|
372
|
+
/**
|
|
373
|
+
* Change a project member's role.
|
|
374
|
+
*
|
|
375
|
+
* @param opts.projectId Project public ID
|
|
376
|
+
*
|
|
377
|
+
* @example
|
|
378
|
+
* ```tsx
|
|
379
|
+
* function BasicExample() {
|
|
380
|
+
* const { mutate } = useChangeMemberRole({ projectId: '...' })
|
|
381
|
+
* // Use one of: COORDINATOR_ROLE_ID, MEMBER_ROLE_ID, BLOCKED_ROLE_ID
|
|
382
|
+
* mutate({ deviceId: '...', roleId: COORDINATOR_ROLE_ID })
|
|
383
|
+
* }
|
|
384
|
+
* ```
|
|
385
|
+
*/
|
|
386
|
+
function useChangeMemberRole({ projectId }) {
|
|
387
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
388
|
+
const { data: projectApi } = useSingleProject({ projectId });
|
|
389
|
+
const { error, mutate, mutateAsync, reset, status } = (0, react_query_1.useMutation)((0, projects_js_1.changeMemberRoleMutationOptions)({ projectApi, projectId, queryClient }));
|
|
390
|
+
return status === 'error'
|
|
391
|
+
? { error, mutate, mutateAsync, reset, status }
|
|
392
|
+
: { error: null, mutate, mutateAsync, reset, status };
|
|
393
|
+
}
|
|
371
394
|
/**
|
|
372
395
|
* Create a blob for a project.
|
|
373
396
|
*
|
package/dist/commonjs/index.d.ts
CHANGED
|
@@ -3,6 +3,6 @@ export { useClientApi, useIsArchiveDevice, useOwnDeviceInfo, useSetIsArchiveDevi
|
|
|
3
3
|
export { useCreateDocument, useDeleteDocument, useManyDocs, useSingleDocByDocId, useSingleDocByVersionId, useUpdateDocument, } from './hooks/documents.js';
|
|
4
4
|
export { useAcceptInvite, useManyInvites, useRejectInvite, useRequestCancelInvite, useSendInvite, useSetUpInvitesListeners, useSingleInvite, } from './hooks/invites.js';
|
|
5
5
|
export { useMapStyleUrl } from './hooks/maps.js';
|
|
6
|
-
export { useAddServerPeer, useAttachmentUrl, useConnectSyncServers, useCreateBlob, useCreateProject, useDataSyncProgress, useDisconnectSyncServers, useDocumentCreatedBy, useIconUrl, useImportProjectConfig, useLeaveProject, useManyMembers, useManyProjects, useOwnRoleInProject, useProjectSettings, useRemoveServerPeer, useSetAutostopDataSyncTimeout, useSingleMember, useSingleProject, useStartSync, useStopSync, useSyncState, useUpdateProjectSettings, useExportGeoJSON, useExportZipFile, } from './hooks/projects.js';
|
|
6
|
+
export { useAddServerPeer, useAttachmentUrl, useConnectSyncServers, useCreateBlob, useCreateProject, useDataSyncProgress, useDisconnectSyncServers, useDocumentCreatedBy, useIconUrl, useImportProjectConfig, useLeaveProject, useManyMembers, useManyProjects, useOwnRoleInProject, useProjectSettings, useRemoveServerPeer, useSetAutostopDataSyncTimeout, useSingleMember, useSingleProject, useStartSync, useStopSync, useSyncState, useUpdateProjectSettings, useChangeMemberRole, useExportGeoJSON, useExportZipFile, } from './hooks/projects.js';
|
|
7
7
|
export { type SyncState } from './lib/sync.js';
|
|
8
8
|
export { type WriteableDocument, type WriteableDocumentType, type WriteableValue, } from './lib/types.js';
|
package/dist/commonjs/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useExportZipFile = exports.useExportGeoJSON = exports.useUpdateProjectSettings = exports.useSyncState = exports.useStopSync = exports.useStartSync = exports.useSingleProject = exports.useSingleMember = exports.useSetAutostopDataSyncTimeout = exports.useRemoveServerPeer = exports.useProjectSettings = exports.useOwnRoleInProject = exports.useManyProjects = exports.useManyMembers = exports.useLeaveProject = exports.useImportProjectConfig = exports.useIconUrl = exports.useDocumentCreatedBy = exports.useDisconnectSyncServers = exports.useDataSyncProgress = exports.useCreateProject = exports.useCreateBlob = exports.useConnectSyncServers = exports.useAttachmentUrl = exports.useAddServerPeer = exports.useMapStyleUrl = exports.useSingleInvite = exports.useSetUpInvitesListeners = exports.useSendInvite = exports.useRequestCancelInvite = exports.useRejectInvite = exports.useManyInvites = exports.useAcceptInvite = exports.useUpdateDocument = exports.useSingleDocByVersionId = exports.useSingleDocByDocId = exports.useManyDocs = exports.useDeleteDocument = exports.useCreateDocument = exports.useSetOwnDeviceInfo = exports.useSetIsArchiveDevice = exports.useOwnDeviceInfo = exports.useIsArchiveDevice = exports.useClientApi = exports.ClientApiProvider = exports.ClientApiContext = void 0;
|
|
3
|
+
exports.useExportZipFile = exports.useExportGeoJSON = exports.useChangeMemberRole = exports.useUpdateProjectSettings = exports.useSyncState = exports.useStopSync = exports.useStartSync = exports.useSingleProject = exports.useSingleMember = exports.useSetAutostopDataSyncTimeout = exports.useRemoveServerPeer = exports.useProjectSettings = exports.useOwnRoleInProject = exports.useManyProjects = exports.useManyMembers = exports.useLeaveProject = exports.useImportProjectConfig = exports.useIconUrl = exports.useDocumentCreatedBy = exports.useDisconnectSyncServers = exports.useDataSyncProgress = exports.useCreateProject = exports.useCreateBlob = exports.useConnectSyncServers = exports.useAttachmentUrl = exports.useAddServerPeer = exports.useMapStyleUrl = exports.useSingleInvite = exports.useSetUpInvitesListeners = exports.useSendInvite = exports.useRequestCancelInvite = exports.useRejectInvite = exports.useManyInvites = exports.useAcceptInvite = exports.useUpdateDocument = exports.useSingleDocByVersionId = exports.useSingleDocByDocId = exports.useManyDocs = exports.useDeleteDocument = exports.useCreateDocument = exports.useSetOwnDeviceInfo = exports.useSetIsArchiveDevice = exports.useOwnDeviceInfo = exports.useIsArchiveDevice = exports.useClientApi = exports.ClientApiProvider = exports.ClientApiContext = void 0;
|
|
4
4
|
var ClientApi_js_1 = require("./contexts/ClientApi.js");
|
|
5
5
|
Object.defineProperty(exports, "ClientApiContext", { enumerable: true, get: function () { return ClientApi_js_1.ClientApiContext; } });
|
|
6
6
|
Object.defineProperty(exports, "ClientApiProvider", { enumerable: true, get: function () { return ClientApi_js_1.ClientApiProvider; } });
|
|
@@ -51,5 +51,6 @@ Object.defineProperty(exports, "useStartSync", { enumerable: true, get: function
|
|
|
51
51
|
Object.defineProperty(exports, "useStopSync", { enumerable: true, get: function () { return projects_js_1.useStopSync; } });
|
|
52
52
|
Object.defineProperty(exports, "useSyncState", { enumerable: true, get: function () { return projects_js_1.useSyncState; } });
|
|
53
53
|
Object.defineProperty(exports, "useUpdateProjectSettings", { enumerable: true, get: function () { return projects_js_1.useUpdateProjectSettings; } });
|
|
54
|
+
Object.defineProperty(exports, "useChangeMemberRole", { enumerable: true, get: function () { return projects_js_1.useChangeMemberRole; } });
|
|
54
55
|
Object.defineProperty(exports, "useExportGeoJSON", { enumerable: true, get: function () { return projects_js_1.useExportGeoJSON; } });
|
|
55
56
|
Object.defineProperty(exports, "useExportZipFile", { enumerable: true, get: function () { return projects_js_1.useExportZipFile; } });
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type { BlobApi } from '@comapeo/core' with { 'resolution-mode': 'import' };
|
|
1
|
+
import type { BlobApi, MemberApi } from '@comapeo/core' with { 'resolution-mode': 'import' };
|
|
2
2
|
import type { MapeoClientApi, MapeoProjectApi } from '@comapeo/ipc' with { 'resolution-mode': 'import' };
|
|
3
|
-
import type { ProjectSettings } from '@comapeo/schema' with { 'resolution-mode': 'import' };
|
|
4
3
|
import { type QueryClient, type UnusedSkipTokenOptions } from '@tanstack/react-query';
|
|
5
4
|
export declare function getProjectsQueryKey(): readonly ["@comapeo/core-react", "projects"];
|
|
6
5
|
export declare function getProjectByIdQueryKey({ projectId }: {
|
|
@@ -175,13 +174,20 @@ export declare function updateProjectSettingsMutationOptions({ projectApi, query
|
|
|
175
174
|
projectApi: MapeoProjectApi;
|
|
176
175
|
queryClient: QueryClient;
|
|
177
176
|
}): {
|
|
178
|
-
mutationFn: (value: {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
177
|
+
mutationFn: (value: import("@comapeo/core/dist/mapeo-project.js", { with: { "resolution-mode": "import" } }).EditableProjectSettings) => Promise<import("@comapeo/core/dist/mapeo-project.js", { with: { "resolution-mode": "import" } }).EditableProjectSettings>;
|
|
178
|
+
onSuccess: () => void;
|
|
179
|
+
networkMode: "always";
|
|
180
|
+
retry: false;
|
|
181
|
+
};
|
|
182
|
+
export declare function changeMemberRoleMutationOptions({ projectApi, projectId, queryClient, }: {
|
|
183
|
+
projectApi: MapeoProjectApi;
|
|
184
|
+
projectId: string;
|
|
185
|
+
queryClient: QueryClient;
|
|
186
|
+
}): {
|
|
187
|
+
mutationFn: ({ deviceId, roleId }: {
|
|
188
|
+
deviceId: string;
|
|
189
|
+
roleId: MemberApi.RoleIdAssignableToOthers;
|
|
190
|
+
}) => Promise<void>;
|
|
185
191
|
onSuccess: () => void;
|
|
186
192
|
networkMode: "always";
|
|
187
193
|
retry: false;
|
|
@@ -22,6 +22,7 @@ exports.createProjectMutationOptions = createProjectMutationOptions;
|
|
|
22
22
|
exports.leaveProjectMutationOptions = leaveProjectMutationOptions;
|
|
23
23
|
exports.importProjectConfigMutationOptions = importProjectConfigMutationOptions;
|
|
24
24
|
exports.updateProjectSettingsMutationOptions = updateProjectSettingsMutationOptions;
|
|
25
|
+
exports.changeMemberRoleMutationOptions = changeMemberRoleMutationOptions;
|
|
25
26
|
exports.createBlobMutationOptions = createBlobMutationOptions;
|
|
26
27
|
exports.startSyncMutationOptions = startSyncMutationOptions;
|
|
27
28
|
exports.stopSyncMutationOptions = stopSyncMutationOptions;
|
|
@@ -247,6 +248,22 @@ function updateProjectSettingsMutationOptions({ projectApi, queryClient, }) {
|
|
|
247
248
|
},
|
|
248
249
|
};
|
|
249
250
|
}
|
|
251
|
+
function changeMemberRoleMutationOptions({ projectApi, projectId, queryClient, }) {
|
|
252
|
+
return {
|
|
253
|
+
...(0, shared_js_1.baseMutationOptions)(),
|
|
254
|
+
mutationFn: async ({ deviceId, roleId }) => {
|
|
255
|
+
return projectApi.$member.assignRole(deviceId, roleId);
|
|
256
|
+
},
|
|
257
|
+
onSuccess: () => {
|
|
258
|
+
queryClient.invalidateQueries({
|
|
259
|
+
queryKey: getMembersQueryKey({ projectId }),
|
|
260
|
+
});
|
|
261
|
+
queryClient.invalidateQueries({
|
|
262
|
+
queryKey: getProjectRoleQueryKey({ projectId }),
|
|
263
|
+
});
|
|
264
|
+
},
|
|
265
|
+
};
|
|
266
|
+
}
|
|
250
267
|
function createBlobMutationOptions({ projectApi, }) {
|
|
251
268
|
return {
|
|
252
269
|
...(0, shared_js_1.baseMutationOptions)(),
|
|
@@ -395,37 +395,54 @@ export declare function useUpdateProjectSettings({ projectId }: {
|
|
|
395
395
|
projectId: string;
|
|
396
396
|
}): {
|
|
397
397
|
error: Error;
|
|
398
|
-
mutate: import("@tanstack/react-query").UseMutateFunction<import("@comapeo/core/dist/mapeo-project.js").EditableProjectSettings, Error,
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<import("@comapeo/core/dist/mapeo-project.js").EditableProjectSettings, Error,
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
398
|
+
mutate: import("@tanstack/react-query").UseMutateFunction<import("@comapeo/core/dist/mapeo-project.js").EditableProjectSettings, Error, import("@comapeo/core/dist/mapeo-project.js").EditableProjectSettings, unknown>;
|
|
399
|
+
mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<import("@comapeo/core/dist/mapeo-project.js").EditableProjectSettings, Error, import("@comapeo/core/dist/mapeo-project.js").EditableProjectSettings, unknown>;
|
|
400
|
+
reset: () => void;
|
|
401
|
+
status: "error";
|
|
402
|
+
} | {
|
|
403
|
+
error: null;
|
|
404
|
+
mutate: import("@tanstack/react-query").UseMutateFunction<import("@comapeo/core/dist/mapeo-project.js").EditableProjectSettings, Error, import("@comapeo/core/dist/mapeo-project.js").EditableProjectSettings, unknown>;
|
|
405
|
+
mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<import("@comapeo/core/dist/mapeo-project.js").EditableProjectSettings, Error, import("@comapeo/core/dist/mapeo-project.js").EditableProjectSettings, unknown>;
|
|
406
|
+
reset: () => void;
|
|
407
|
+
status: "pending" | "success" | "idle";
|
|
408
|
+
};
|
|
409
|
+
/**
|
|
410
|
+
* Change a project member's role.
|
|
411
|
+
*
|
|
412
|
+
* @param opts.projectId Project public ID
|
|
413
|
+
*
|
|
414
|
+
* @example
|
|
415
|
+
* ```tsx
|
|
416
|
+
* function BasicExample() {
|
|
417
|
+
* const { mutate } = useChangeMemberRole({ projectId: '...' })
|
|
418
|
+
* // Use one of: COORDINATOR_ROLE_ID, MEMBER_ROLE_ID, BLOCKED_ROLE_ID
|
|
419
|
+
* mutate({ deviceId: '...', roleId: COORDINATOR_ROLE_ID })
|
|
420
|
+
* }
|
|
421
|
+
* ```
|
|
422
|
+
*/
|
|
423
|
+
export declare function useChangeMemberRole({ projectId }: {
|
|
424
|
+
projectId: string;
|
|
425
|
+
}): {
|
|
426
|
+
error: Error;
|
|
427
|
+
mutate: import("@tanstack/react-query").UseMutateFunction<void, Error, {
|
|
428
|
+
deviceId: string;
|
|
429
|
+
roleId: import("@comapeo/core").MemberApi.RoleIdAssignableToOthers;
|
|
430
|
+
}, unknown>;
|
|
431
|
+
mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<void, Error, {
|
|
432
|
+
deviceId: string;
|
|
433
|
+
roleId: import("@comapeo/core").MemberApi.RoleIdAssignableToOthers;
|
|
411
434
|
}, unknown>;
|
|
412
435
|
reset: () => void;
|
|
413
436
|
status: "error";
|
|
414
437
|
} | {
|
|
415
438
|
error: null;
|
|
416
|
-
mutate: import("@tanstack/react-query").UseMutateFunction<
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<import("@comapeo/core/dist/mapeo-project.js").EditableProjectSettings, Error, {
|
|
424
|
-
name?: import("@comapeo/schema").ProjectSettings["name"];
|
|
425
|
-
configMetadata?: import("@comapeo/schema").ProjectSettings["configMetadata"];
|
|
426
|
-
defaultPresets?: import("@comapeo/schema").ProjectSettings["defaultPresets"];
|
|
427
|
-
projectColor?: import("@comapeo/schema").ProjectSettings["projectColor"];
|
|
428
|
-
projectDescription?: import("@comapeo/schema").ProjectSettings["projectDescription"];
|
|
439
|
+
mutate: import("@tanstack/react-query").UseMutateFunction<void, Error, {
|
|
440
|
+
deviceId: string;
|
|
441
|
+
roleId: import("@comapeo/core").MemberApi.RoleIdAssignableToOthers;
|
|
442
|
+
}, unknown>;
|
|
443
|
+
mutateAsync: import("@tanstack/react-query").UseMutateAsyncFunction<void, Error, {
|
|
444
|
+
deviceId: string;
|
|
445
|
+
roleId: import("@comapeo/core").MemberApi.RoleIdAssignableToOthers;
|
|
429
446
|
}, unknown>;
|
|
430
447
|
reset: () => void;
|
|
431
448
|
status: "pending" | "success" | "idle";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useMutation, useQueryClient, useSuspenseQuery, } from '@tanstack/react-query';
|
|
2
2
|
import { useSyncExternalStore } from 'react';
|
|
3
|
-
import { addServerPeerMutationOptions, connectSyncServersMutationOptions, createBlobMutationOptions, createProjectMutationOptions, disconnectSyncServersMutationOptions, documentCreatedByQueryOptions, exportGeoJSONMutationOptions, exportZipFileMutationOptions, importProjectConfigMutationOptions, leaveProjectMutationOptions, mediaServerOriginQueryOptions, projectByIdQueryOptions, projectMemberByIdQueryOptions, projectMembersQueryOptions, projectOwnRoleQueryOptions, projectSettingsQueryOptions, projectsQueryOptions, removeServerPeerMutationOptions, setAutostopDataSyncTimeoutMutationOptions, startSyncMutationOptions, stopSyncMutationOptions, updateProjectSettingsMutationOptions, } from '../lib/react-query/projects.js';
|
|
3
|
+
import { addServerPeerMutationOptions, changeMemberRoleMutationOptions, connectSyncServersMutationOptions, createBlobMutationOptions, createProjectMutationOptions, disconnectSyncServersMutationOptions, documentCreatedByQueryOptions, exportGeoJSONMutationOptions, exportZipFileMutationOptions, importProjectConfigMutationOptions, leaveProjectMutationOptions, mediaServerOriginQueryOptions, projectByIdQueryOptions, projectMemberByIdQueryOptions, projectMembersQueryOptions, projectOwnRoleQueryOptions, projectSettingsQueryOptions, projectsQueryOptions, removeServerPeerMutationOptions, setAutostopDataSyncTimeoutMutationOptions, startSyncMutationOptions, stopSyncMutationOptions, updateProjectSettingsMutationOptions, } from '../lib/react-query/projects.js';
|
|
4
4
|
import { SyncStore } from '../lib/sync.js';
|
|
5
5
|
import { getBlobUrl, getIconUrl } from '../lib/urls.js';
|
|
6
6
|
import { useClientApi } from './client.js';
|
|
@@ -341,6 +341,28 @@ export function useUpdateProjectSettings({ projectId }) {
|
|
|
341
341
|
? { error, mutate, mutateAsync, reset, status }
|
|
342
342
|
: { error: null, mutate, mutateAsync, reset, status };
|
|
343
343
|
}
|
|
344
|
+
/**
|
|
345
|
+
* Change a project member's role.
|
|
346
|
+
*
|
|
347
|
+
* @param opts.projectId Project public ID
|
|
348
|
+
*
|
|
349
|
+
* @example
|
|
350
|
+
* ```tsx
|
|
351
|
+
* function BasicExample() {
|
|
352
|
+
* const { mutate } = useChangeMemberRole({ projectId: '...' })
|
|
353
|
+
* // Use one of: COORDINATOR_ROLE_ID, MEMBER_ROLE_ID, BLOCKED_ROLE_ID
|
|
354
|
+
* mutate({ deviceId: '...', roleId: COORDINATOR_ROLE_ID })
|
|
355
|
+
* }
|
|
356
|
+
* ```
|
|
357
|
+
*/
|
|
358
|
+
export function useChangeMemberRole({ projectId }) {
|
|
359
|
+
const queryClient = useQueryClient();
|
|
360
|
+
const { data: projectApi } = useSingleProject({ projectId });
|
|
361
|
+
const { error, mutate, mutateAsync, reset, status } = useMutation(changeMemberRoleMutationOptions({ projectApi, projectId, queryClient }));
|
|
362
|
+
return status === 'error'
|
|
363
|
+
? { error, mutate, mutateAsync, reset, status }
|
|
364
|
+
: { error: null, mutate, mutateAsync, reset, status };
|
|
365
|
+
}
|
|
344
366
|
/**
|
|
345
367
|
* Create a blob for a project.
|
|
346
368
|
*
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -3,6 +3,6 @@ export { useClientApi, useIsArchiveDevice, useOwnDeviceInfo, useSetIsArchiveDevi
|
|
|
3
3
|
export { useCreateDocument, useDeleteDocument, useManyDocs, useSingleDocByDocId, useSingleDocByVersionId, useUpdateDocument, } from './hooks/documents.js';
|
|
4
4
|
export { useAcceptInvite, useManyInvites, useRejectInvite, useRequestCancelInvite, useSendInvite, useSetUpInvitesListeners, useSingleInvite, } from './hooks/invites.js';
|
|
5
5
|
export { useMapStyleUrl } from './hooks/maps.js';
|
|
6
|
-
export { useAddServerPeer, useAttachmentUrl, useConnectSyncServers, useCreateBlob, useCreateProject, useDataSyncProgress, useDisconnectSyncServers, useDocumentCreatedBy, useIconUrl, useImportProjectConfig, useLeaveProject, useManyMembers, useManyProjects, useOwnRoleInProject, useProjectSettings, useRemoveServerPeer, useSetAutostopDataSyncTimeout, useSingleMember, useSingleProject, useStartSync, useStopSync, useSyncState, useUpdateProjectSettings, useExportGeoJSON, useExportZipFile, } from './hooks/projects.js';
|
|
6
|
+
export { useAddServerPeer, useAttachmentUrl, useConnectSyncServers, useCreateBlob, useCreateProject, useDataSyncProgress, useDisconnectSyncServers, useDocumentCreatedBy, useIconUrl, useImportProjectConfig, useLeaveProject, useManyMembers, useManyProjects, useOwnRoleInProject, useProjectSettings, useRemoveServerPeer, useSetAutostopDataSyncTimeout, useSingleMember, useSingleProject, useStartSync, useStopSync, useSyncState, useUpdateProjectSettings, useChangeMemberRole, useExportGeoJSON, useExportZipFile, } from './hooks/projects.js';
|
|
7
7
|
export { type SyncState } from './lib/sync.js';
|
|
8
8
|
export { type WriteableDocument, type WriteableDocumentType, type WriteableValue, } from './lib/types.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -3,4 +3,4 @@ export { useClientApi, useIsArchiveDevice, useOwnDeviceInfo, useSetIsArchiveDevi
|
|
|
3
3
|
export { useCreateDocument, useDeleteDocument, useManyDocs, useSingleDocByDocId, useSingleDocByVersionId, useUpdateDocument, } from './hooks/documents.js';
|
|
4
4
|
export { useAcceptInvite, useManyInvites, useRejectInvite, useRequestCancelInvite, useSendInvite, useSetUpInvitesListeners, useSingleInvite, } from './hooks/invites.js';
|
|
5
5
|
export { useMapStyleUrl } from './hooks/maps.js';
|
|
6
|
-
export { useAddServerPeer, useAttachmentUrl, useConnectSyncServers, useCreateBlob, useCreateProject, useDataSyncProgress, useDisconnectSyncServers, useDocumentCreatedBy, useIconUrl, useImportProjectConfig, useLeaveProject, useManyMembers, useManyProjects, useOwnRoleInProject, useProjectSettings, useRemoveServerPeer, useSetAutostopDataSyncTimeout, useSingleMember, useSingleProject, useStartSync, useStopSync, useSyncState, useUpdateProjectSettings, useExportGeoJSON, useExportZipFile, } from './hooks/projects.js';
|
|
6
|
+
export { useAddServerPeer, useAttachmentUrl, useConnectSyncServers, useCreateBlob, useCreateProject, useDataSyncProgress, useDisconnectSyncServers, useDocumentCreatedBy, useIconUrl, useImportProjectConfig, useLeaveProject, useManyMembers, useManyProjects, useOwnRoleInProject, useProjectSettings, useRemoveServerPeer, useSetAutostopDataSyncTimeout, useSingleMember, useSingleProject, useStartSync, useStopSync, useSyncState, useUpdateProjectSettings, useChangeMemberRole, useExportGeoJSON, useExportZipFile, } from './hooks/projects.js';
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type { BlobApi } from '@comapeo/core' with { 'resolution-mode': 'import' };
|
|
1
|
+
import type { BlobApi, MemberApi } from '@comapeo/core' with { 'resolution-mode': 'import' };
|
|
2
2
|
import type { MapeoClientApi, MapeoProjectApi } from '@comapeo/ipc' with { 'resolution-mode': 'import' };
|
|
3
|
-
import type { ProjectSettings } from '@comapeo/schema' with { 'resolution-mode': 'import' };
|
|
4
3
|
import { type QueryClient, type UnusedSkipTokenOptions } from '@tanstack/react-query';
|
|
5
4
|
export declare function getProjectsQueryKey(): readonly ["@comapeo/core-react", "projects"];
|
|
6
5
|
export declare function getProjectByIdQueryKey({ projectId }: {
|
|
@@ -175,13 +174,20 @@ export declare function updateProjectSettingsMutationOptions({ projectApi, query
|
|
|
175
174
|
projectApi: MapeoProjectApi;
|
|
176
175
|
queryClient: QueryClient;
|
|
177
176
|
}): {
|
|
178
|
-
mutationFn: (value:
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
177
|
+
mutationFn: (value: import("@comapeo/core/dist/mapeo-project.js").EditableProjectSettings) => Promise<import("@comapeo/core/dist/mapeo-project.js").EditableProjectSettings>;
|
|
178
|
+
onSuccess: () => void;
|
|
179
|
+
networkMode: "always";
|
|
180
|
+
retry: false;
|
|
181
|
+
};
|
|
182
|
+
export declare function changeMemberRoleMutationOptions({ projectApi, projectId, queryClient, }: {
|
|
183
|
+
projectApi: MapeoProjectApi;
|
|
184
|
+
projectId: string;
|
|
185
|
+
queryClient: QueryClient;
|
|
186
|
+
}): {
|
|
187
|
+
mutationFn: ({ deviceId, roleId }: {
|
|
188
|
+
deviceId: string;
|
|
189
|
+
roleId: MemberApi.RoleIdAssignableToOthers;
|
|
190
|
+
}) => Promise<void>;
|
|
185
191
|
onSuccess: () => void;
|
|
186
192
|
networkMode: "always";
|
|
187
193
|
retry: false;
|
|
@@ -215,6 +215,22 @@ export function updateProjectSettingsMutationOptions({ projectApi, queryClient,
|
|
|
215
215
|
},
|
|
216
216
|
};
|
|
217
217
|
}
|
|
218
|
+
export function changeMemberRoleMutationOptions({ projectApi, projectId, queryClient, }) {
|
|
219
|
+
return {
|
|
220
|
+
...baseMutationOptions(),
|
|
221
|
+
mutationFn: async ({ deviceId, roleId }) => {
|
|
222
|
+
return projectApi.$member.assignRole(deviceId, roleId);
|
|
223
|
+
},
|
|
224
|
+
onSuccess: () => {
|
|
225
|
+
queryClient.invalidateQueries({
|
|
226
|
+
queryKey: getMembersQueryKey({ projectId }),
|
|
227
|
+
});
|
|
228
|
+
queryClient.invalidateQueries({
|
|
229
|
+
queryKey: getProjectRoleQueryKey({ projectId }),
|
|
230
|
+
});
|
|
231
|
+
},
|
|
232
|
+
};
|
|
233
|
+
}
|
|
218
234
|
export function createBlobMutationOptions({ projectApi, }) {
|
|
219
235
|
return {
|
|
220
236
|
...baseMutationOptions(),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@comapeo/core-react",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.2.1",
|
|
4
4
|
"description": "React wrapper for working with @comapeo/core",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -57,44 +57,45 @@
|
|
|
57
57
|
"types": "tsc"
|
|
58
58
|
},
|
|
59
59
|
"peerDependencies": {
|
|
60
|
-
"@comapeo/core": "^4.
|
|
60
|
+
"@comapeo/core": "^4.3.0",
|
|
61
61
|
"@comapeo/ipc": "^5.0.0",
|
|
62
62
|
"@comapeo/schema": "*",
|
|
63
63
|
"@tanstack/react-query": "^5",
|
|
64
64
|
"react": "^18 || ^19"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
|
-
"@comapeo/core": "4.
|
|
67
|
+
"@comapeo/core": "4.3.0",
|
|
68
68
|
"@comapeo/ipc": "5.0.0",
|
|
69
|
-
"@comapeo/schema": "2.
|
|
70
|
-
"@eslint/compat": "1.3.
|
|
71
|
-
"@eslint/js": "9.
|
|
72
|
-
"@ianvs/prettier-plugin-sort-imports": "4.
|
|
69
|
+
"@comapeo/schema": "2.1.1",
|
|
70
|
+
"@eslint/compat": "1.3.2",
|
|
71
|
+
"@eslint/js": "9.35.0",
|
|
72
|
+
"@ianvs/prettier-plugin-sort-imports": "4.7.0",
|
|
73
73
|
"@mapeo/crypto": "1.0.0-alpha.10",
|
|
74
|
-
"@tanstack/eslint-plugin-query": "5.
|
|
75
|
-
"@tanstack/react-query": "5.
|
|
76
|
-
"@testing-library/dom": "10.4.
|
|
74
|
+
"@tanstack/eslint-plugin-query": "5.89.0",
|
|
75
|
+
"@tanstack/react-query": "5.89.0",
|
|
76
|
+
"@testing-library/dom": "10.4.1",
|
|
77
77
|
"@testing-library/react": "16.3.0",
|
|
78
|
-
"@types/node": "22.
|
|
79
|
-
"@types/react": "19.1.
|
|
80
|
-
"@types/react-dom": "19.1.
|
|
81
|
-
"@vitest/eslint-plugin": "1.
|
|
82
|
-
"eslint": "9.
|
|
78
|
+
"@types/node": "22.18.6",
|
|
79
|
+
"@types/react": "19.1.13",
|
|
80
|
+
"@types/react-dom": "19.1.9",
|
|
81
|
+
"@vitest/eslint-plugin": "1.3.12",
|
|
82
|
+
"eslint": "9.35.0",
|
|
83
83
|
"eslint-plugin-react-hooks": "5.2.0",
|
|
84
|
-
"eslint-plugin-testing-library": "7.
|
|
84
|
+
"eslint-plugin-testing-library": "7.8.0",
|
|
85
85
|
"fastify": "4.29.1",
|
|
86
|
-
"globals": "16.
|
|
86
|
+
"globals": "16.4.0",
|
|
87
|
+
"happy-dom": "18.0.1",
|
|
87
88
|
"husky": "9.1.7",
|
|
88
|
-
"lint-staged": "15.5.
|
|
89
|
+
"lint-staged": "15.5.2",
|
|
89
90
|
"npm-run-all2": "7.0.2",
|
|
90
|
-
"prettier": "3.
|
|
91
|
+
"prettier": "3.6.2",
|
|
91
92
|
"random-access-memory": "6.2.1",
|
|
92
|
-
"react": "19.1.
|
|
93
|
-
"react-dom": "19.1.
|
|
94
|
-
"tsdoc-markdown": "1.
|
|
93
|
+
"react": "19.1.1",
|
|
94
|
+
"react-dom": "19.1.1",
|
|
95
|
+
"tsdoc-markdown": "1.4.1",
|
|
95
96
|
"tshy": "3.0.2",
|
|
96
|
-
"typescript": "5.
|
|
97
|
-
"typescript-eslint": "8.
|
|
98
|
-
"vitest": "3.2.
|
|
97
|
+
"typescript": "5.9.2",
|
|
98
|
+
"typescript-eslint": "8.44.0",
|
|
99
|
+
"vitest": "3.2.4"
|
|
99
100
|
}
|
|
100
101
|
}
|