@qoretechnologies/reqraft 0.10.64 → 0.10.65-pr.148.gc6381e4
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/.claude/CLAUDE.md +1 -0
- package/dist/components/supportTicket/InterfaceReferenceTags.d.ts +13 -1
- package/dist/components/supportTicket/InterfaceReferenceTags.d.ts.map +1 -1
- package/dist/components/supportTicket/InterfaceReferenceTags.js +11 -4
- package/dist/components/supportTicket/InterfaceReferenceTags.js.map +1 -1
- package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
- package/dist/components/supportTicket/ReferencePicker.js +1 -1
- package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
- package/dist/components/supportTicket/WorkspaceAccessStatus.d.ts +55 -0
- package/dist/components/supportTicket/WorkspaceAccessStatus.d.ts.map +1 -0
- package/dist/components/supportTicket/WorkspaceAccessStatus.js +79 -0
- package/dist/components/supportTicket/WorkspaceAccessStatus.js.map +1 -0
- package/dist/components/supportTicket/accessMeta.d.ts +50 -0
- package/dist/components/supportTicket/accessMeta.d.ts.map +1 -0
- package/dist/components/supportTicket/accessMeta.js +174 -0
- package/dist/components/supportTicket/accessMeta.js.map +1 -0
- package/dist/components/supportTicket/index.d.ts +2 -0
- package/dist/components/supportTicket/index.d.ts.map +1 -1
- package/dist/components/supportTicket/index.js +2 -0
- package/dist/components/supportTicket/index.js.map +1 -1
- package/dist/components/supportTicket/meta.d.ts +62 -2
- package/dist/components/supportTicket/meta.d.ts.map +1 -1
- package/dist/components/supportTicket/meta.js +116 -3
- package/dist/components/supportTicket/meta.js.map +1 -1
- package/dist/components/supportTicket/ticketModel.d.ts +10 -0
- package/dist/components/supportTicket/ticketModel.d.ts.map +1 -1
- package/dist/components/ticketReferences/TicketReferences.d.ts +10 -1
- package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
- package/dist/components/ticketReferences/TicketReferences.js +12 -8
- package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
- package/dist/components/ticketThread/TicketThread.d.ts +30 -1
- package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
- package/dist/components/ticketThread/TicketThread.js +51 -13
- package/dist/components/ticketThread/TicketThread.js.map +1 -1
- package/dist/components/ticketThread/index.d.ts +1 -1
- package/dist/components/ticketThread/index.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/providers/StorageProvider.d.ts +11 -0
- package/dist/providers/StorageProvider.d.ts.map +1 -1
- package/dist/providers/StorageProvider.js +21 -3
- package/dist/providers/StorageProvider.js.map +1 -1
- package/dist/stores/currentUser/currentUser.d.ts +42 -0
- package/dist/stores/currentUser/currentUser.d.ts.map +1 -1
- package/dist/stores/currentUser/currentUser.js.map +1 -1
- package/package.json +2 -2
- package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +56 -0
- package/src/components/supportTicket/InterfaceReferenceTags.tsx +27 -7
- package/src/components/supportTicket/ReferencePicker.tsx +4 -1
- package/src/components/supportTicket/WorkspaceAccessStatus.stories.tsx +105 -0
- package/src/components/supportTicket/WorkspaceAccessStatus.tsx +176 -0
- package/src/components/supportTicket/accessMeta.ts +210 -0
- package/src/components/supportTicket/index.ts +2 -0
- package/src/components/supportTicket/meta.ts +156 -4
- package/src/components/supportTicket/ticketModel.ts +10 -0
- package/src/components/ticketReferences/TicketReferences.stories.tsx +40 -0
- package/src/components/ticketReferences/TicketReferences.tsx +24 -10
- package/src/components/ticketThread/TicketThread.stories.tsx +103 -1
- package/src/components/ticketThread/TicketThread.tsx +131 -15
- package/src/components/ticketThread/index.ts +1 -0
- package/src/index.tsx +1 -0
- package/src/providers/StorageProvider.tsx +20 -3
- package/src/stores/currentUser/currentUser.tsx +43 -0
package/src/index.tsx
CHANGED
|
@@ -6,7 +6,7 @@ import { ReqraftStorageContext, TReqraftStorage } from '../contexts/StorageConte
|
|
|
6
6
|
import { useFetch } from '../hooks/useFetch/useFetch';
|
|
7
7
|
import { useReqraftProperty } from '../hooks/useReqraftProperty';
|
|
8
8
|
import { TReqraftStorageValue } from '../hooks/useStorage/useStorage';
|
|
9
|
-
import { currentUserStore } from '../stores/currentUser/currentUser';
|
|
9
|
+
import { currentUserStore, ICurrentUser } from '../stores/currentUser/currentUser';
|
|
10
10
|
import { isQueryCancelled } from '../utils/fetch';
|
|
11
11
|
import { IReqraftProviderProps } from './ReqraftProvider';
|
|
12
12
|
|
|
@@ -27,6 +27,18 @@ export const applyStorageWrite = (
|
|
|
27
27
|
value: unknown
|
|
28
28
|
): TReqraftStorage => set(cloneDeep(storage) ?? {}, path, value);
|
|
29
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Whether the current user's storage may be persisted. The server answers
|
|
32
|
+
* `storage_writable: false` for an identity whose storage is not its own to keep — a
|
|
33
|
+
* staff member in an interactive support session reads a customer's workspace as the
|
|
34
|
+
* workspace's reader principal, and a preference they flip must not land in that
|
|
35
|
+
* principal's storage (qorus#693). A write for such a user is applied in memory only,
|
|
36
|
+
* so the page behaves as it always does, and nothing is sent. A user the flag is
|
|
37
|
+
* absent for is writable: that is every server from before the flag existed.
|
|
38
|
+
*/
|
|
39
|
+
export const storageIsWritable = (user?: Pick<ICurrentUser, 'storage_writable'>): boolean =>
|
|
40
|
+
user?.storage_writable !== false;
|
|
41
|
+
|
|
30
42
|
export interface IReqraftStorageProviderProps
|
|
31
43
|
extends Pick<IReqraftProviderProps, 'waitForStorage'> {
|
|
32
44
|
children: ReactNode;
|
|
@@ -95,7 +107,10 @@ export const ReqraftUserProvider = ({ children, waitForStorage }: IReqraftStorag
|
|
|
95
107
|
|
|
96
108
|
updateCurrentUserStorage(updatedStorage);
|
|
97
109
|
|
|
98
|
-
|
|
110
|
+
// in memory only for a user whose storage is not theirs to keep
|
|
111
|
+
if (storageIsWritable(currentUserStore.getState().currentUser)) {
|
|
112
|
+
load({ body: { storage: updatedStorage } });
|
|
113
|
+
}
|
|
99
114
|
},
|
|
100
115
|
[appName, load, updateCurrentUserStorage]
|
|
101
116
|
);
|
|
@@ -111,7 +126,9 @@ export const ReqraftUserProvider = ({ children, waitForStorage }: IReqraftStorag
|
|
|
111
126
|
|
|
112
127
|
updateCurrentUserStorage(updatedStorage);
|
|
113
128
|
|
|
114
|
-
|
|
129
|
+
if (storageIsWritable(currentUserStore.getState().currentUser)) {
|
|
130
|
+
load({ body: { storage_path: _path } });
|
|
131
|
+
}
|
|
115
132
|
},
|
|
116
133
|
[appName, load, updateCurrentUserStorage]
|
|
117
134
|
);
|
|
@@ -1,6 +1,39 @@
|
|
|
1
1
|
import { create } from 'zustand';
|
|
2
2
|
import { IReqraftFetchResponse, isQueryCancelled, query } from '../../utils/fetch';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* The interactive support session a current user is in, when it is one (qorus#693
|
|
6
|
+
* Layer 3): a staff member reading a customer's workspace in the IDE, read-only, as
|
|
7
|
+
* the workspace's support reader. Exactly what the server puts on the request context
|
|
8
|
+
* for such a session, never a token. Absent for every ordinary user.
|
|
9
|
+
*/
|
|
10
|
+
export interface ICurrentUserSupportSession {
|
|
11
|
+
/** the session's id on the control plane */
|
|
12
|
+
session_id: string;
|
|
13
|
+
/** the customer's grant the session runs under */
|
|
14
|
+
grant_id: string;
|
|
15
|
+
/** the ticket the grant belongs to */
|
|
16
|
+
ticket_id: string;
|
|
17
|
+
/** the ticket's number, for display */
|
|
18
|
+
ticket_number?: number;
|
|
19
|
+
/** the control-plane staff identity the session belongs to */
|
|
20
|
+
actor: string;
|
|
21
|
+
/** the staff member's display name, when the control plane has it */
|
|
22
|
+
actor_name?: string;
|
|
23
|
+
/** the workspace's portable namespace */
|
|
24
|
+
group_namespace: number;
|
|
25
|
+
/** the workspace group's name */
|
|
26
|
+
group_name?: string;
|
|
27
|
+
/** the identity profile, `workspace-read` */
|
|
28
|
+
profile: string;
|
|
29
|
+
/** when the session ends at the latest: the grant's expiry (ISO 8601) */
|
|
30
|
+
expires: string;
|
|
31
|
+
/** where the IDE opens — `kind` and `name` or `id` — when the staff member came from a reference */
|
|
32
|
+
target?: Record<string, unknown>;
|
|
33
|
+
/** the control-plane page to return to */
|
|
34
|
+
portal_url?: string;
|
|
35
|
+
}
|
|
36
|
+
|
|
4
37
|
export interface ICurrentUser {
|
|
5
38
|
provider: string;
|
|
6
39
|
username: string;
|
|
@@ -19,6 +52,16 @@ export interface ICurrentUser {
|
|
|
19
52
|
storage?: Record<string, any>;
|
|
20
53
|
sandboxed?: boolean;
|
|
21
54
|
default_group?: string;
|
|
55
|
+
/**
|
|
56
|
+
* Whether the user's storage can be written back to the server. `false` for an
|
|
57
|
+
* identity whose storage is not its own to keep — an interactive support session
|
|
58
|
+
* reads a workspace as its reader principal — and then every storage write stays
|
|
59
|
+
* in memory for the page's lifetime (see `ReqraftUserProvider`). Absent means
|
|
60
|
+
* writable, as on every server from before the flag.
|
|
61
|
+
*/
|
|
62
|
+
storage_writable?: boolean;
|
|
63
|
+
/** present only in an interactive support session (qorus#693 Layer 3) */
|
|
64
|
+
support_session?: ICurrentUserSupportSession;
|
|
22
65
|
}
|
|
23
66
|
|
|
24
67
|
export interface ICurrentUserStore {
|