@memberjunction/ng-conversations 2.110.1 → 2.111.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/lib/components/artifact/artifact-share-modal.component.d.ts +42 -0
  2. package/dist/lib/components/artifact/artifact-share-modal.component.d.ts.map +1 -0
  3. package/dist/lib/components/artifact/artifact-share-modal.component.js +659 -0
  4. package/dist/lib/components/artifact/artifact-share-modal.component.js.map +1 -0
  5. package/dist/lib/components/collection/collection-artifact-card.component.d.ts +15 -3
  6. package/dist/lib/components/collection/collection-artifact-card.component.d.ts.map +1 -1
  7. package/dist/lib/components/collection/collection-artifact-card.component.js +89 -23
  8. package/dist/lib/components/collection/collection-artifact-card.component.js.map +1 -1
  9. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +44 -6
  10. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
  11. package/dist/lib/components/conversation/conversation-chat-area.component.js +321 -182
  12. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
  13. package/dist/lib/components/conversation/conversation-empty-state.component.d.ts +25 -0
  14. package/dist/lib/components/conversation/conversation-empty-state.component.d.ts.map +1 -0
  15. package/dist/lib/components/conversation/conversation-empty-state.component.js +233 -0
  16. package/dist/lib/components/conversation/conversation-empty-state.component.js.map +1 -0
  17. package/dist/lib/components/mention/mention-dropdown.component.d.ts +2 -1
  18. package/dist/lib/components/mention/mention-dropdown.component.d.ts.map +1 -1
  19. package/dist/lib/components/mention/mention-dropdown.component.js +8 -5
  20. package/dist/lib/components/mention/mention-dropdown.component.js.map +1 -1
  21. package/dist/lib/components/message/message-input-box.component.d.ts +72 -0
  22. package/dist/lib/components/message/message-input-box.component.d.ts.map +1 -0
  23. package/dist/lib/components/message/message-input-box.component.js +267 -0
  24. package/dist/lib/components/message/message-input-box.component.js.map +1 -0
  25. package/dist/lib/components/message/message-input.component.d.ts +13 -37
  26. package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
  27. package/dist/lib/components/message/message-input.component.js +106 -190
  28. package/dist/lib/components/message/message-input.component.js.map +1 -1
  29. package/dist/lib/components/navigation/conversation-navigation.component.d.ts +2 -1
  30. package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -1
  31. package/dist/lib/components/navigation/conversation-navigation.component.js +12 -2
  32. package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -1
  33. package/dist/lib/components/workspace/conversation-workspace.component.d.ts +24 -1
  34. package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
  35. package/dist/lib/components/workspace/conversation-workspace.component.js +119 -33
  36. package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
  37. package/dist/lib/conversations.module.d.ts +55 -52
  38. package/dist/lib/conversations.module.d.ts.map +1 -1
  39. package/dist/lib/conversations.module.js +15 -3
  40. package/dist/lib/conversations.module.js.map +1 -1
  41. package/dist/lib/services/artifact-permission.service.d.ts +94 -0
  42. package/dist/lib/services/artifact-permission.service.d.ts.map +1 -0
  43. package/dist/lib/services/artifact-permission.service.js +294 -0
  44. package/dist/lib/services/artifact-permission.service.js.map +1 -0
  45. package/dist/lib/services/artifact-state.service.d.ts +25 -2
  46. package/dist/lib/services/artifact-state.service.d.ts.map +1 -1
  47. package/dist/lib/services/artifact-state.service.js +55 -4
  48. package/dist/lib/services/artifact-state.service.js.map +1 -1
  49. package/dist/lib/services/conversation-state.service.d.ts +1 -0
  50. package/dist/lib/services/conversation-state.service.d.ts.map +1 -1
  51. package/dist/lib/services/conversation-state.service.js +2 -0
  52. package/dist/lib/services/conversation-state.service.js.map +1 -1
  53. package/dist/public-api.d.ts +5 -0
  54. package/dist/public-api.d.ts.map +1 -1
  55. package/dist/public-api.js +5 -0
  56. package/dist/public-api.js.map +1 -1
  57. package/package.json +19 -15
@@ -22,6 +22,7 @@ import { MarkdownModule } from 'ngx-markdown';
22
22
  import { MessageItemComponent } from './components/message/message-item.component';
23
23
  import { MessageListComponent } from './components/message/message-list.component';
24
24
  import { MessageInputComponent } from './components/message/message-input.component';
25
+ import { MessageInputBoxComponent } from './components/message/message-input-box.component';
25
26
  import { SuggestedResponsesComponent } from './components/message/suggested-responses.component';
26
27
  import { MentionDropdownComponent } from './components/mention/mention-dropdown.component';
27
28
  import { ConversationWorkspaceComponent } from './components/workspace/conversation-workspace.component';
@@ -29,6 +30,7 @@ import { ConversationNavigationComponent } from './components/navigation/convers
29
30
  import { ConversationSidebarComponent } from './components/sidebar/conversation-sidebar.component';
30
31
  import { ConversationListComponent } from './components/conversation/conversation-list.component';
31
32
  import { ConversationChatAreaComponent } from './components/conversation/conversation-chat-area.component';
33
+ import { ConversationEmptyStateComponent } from './components/conversation/conversation-empty-state.component';
32
34
  import { ThreadPanelComponent } from './components/thread/thread-panel.component';
33
35
  import { CollectionTreeComponent } from './components/collection/collection-tree.component';
34
36
  import { CollectionViewComponent } from './components/collection/collection-view.component';
@@ -56,6 +58,7 @@ import { InputDialogComponent } from './components/dialogs/input-dialog.componen
56
58
  import { CollectionShareModalComponent } from './components/collection/collection-share-modal.component';
57
59
  import { UserPickerComponent } from './components/shared/user-picker.component';
58
60
  import { ArtifactCollectionPickerModalComponent } from './components/collection/artifact-collection-picker-modal.component';
61
+ import { ArtifactShareModalComponent } from './components/artifact/artifact-share-modal.component';
59
62
  // Directives
60
63
  import { SearchShortcutDirective } from './directives/search-shortcut.directive';
61
64
  import * as i0 from "@angular/core";
@@ -65,6 +68,7 @@ const COMPONENTS = [
65
68
  MessageItemComponent,
66
69
  MessageListComponent,
67
70
  MessageInputComponent,
71
+ MessageInputBoxComponent,
68
72
  SuggestedResponsesComponent,
69
73
  MentionDropdownComponent,
70
74
  ConversationWorkspaceComponent,
@@ -72,6 +76,7 @@ const COMPONENTS = [
72
76
  ConversationSidebarComponent,
73
77
  ConversationListComponent,
74
78
  ConversationChatAreaComponent,
79
+ ConversationEmptyStateComponent,
75
80
  ThreadPanelComponent,
76
81
  CollectionTreeComponent,
77
82
  CollectionViewComponent,
@@ -122,7 +127,8 @@ export class ConversationsModule {
122
127
  TasksFullViewComponent,
123
128
  CollectionShareModalComponent,
124
129
  UserPickerComponent,
125
- ArtifactCollectionPickerModalComponent] });
130
+ ArtifactCollectionPickerModalComponent,
131
+ ArtifactShareModalComponent] });
126
132
  }
127
133
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConversationsModule, [{
128
134
  type: NgModule,
@@ -154,7 +160,8 @@ export class ConversationsModule {
154
160
  TasksFullViewComponent,
155
161
  CollectionShareModalComponent,
156
162
  UserPickerComponent,
157
- ArtifactCollectionPickerModalComponent
163
+ ArtifactCollectionPickerModalComponent,
164
+ ArtifactShareModalComponent
158
165
  ],
159
166
  exports: [
160
167
  ...COMPONENTS,
@@ -167,6 +174,7 @@ export class ConversationsModule {
167
174
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(ConversationsModule, { declarations: [MessageItemComponent,
168
175
  MessageListComponent,
169
176
  MessageInputComponent,
177
+ MessageInputBoxComponent,
170
178
  SuggestedResponsesComponent,
171
179
  MentionDropdownComponent,
172
180
  ConversationWorkspaceComponent,
@@ -174,6 +182,7 @@ export class ConversationsModule {
174
182
  ConversationSidebarComponent,
175
183
  ConversationListComponent,
176
184
  ConversationChatAreaComponent,
185
+ ConversationEmptyStateComponent,
177
186
  ThreadPanelComponent,
178
187
  CollectionTreeComponent,
179
188
  CollectionViewComponent,
@@ -218,9 +227,11 @@ export class ConversationsModule {
218
227
  TasksFullViewComponent,
219
228
  CollectionShareModalComponent,
220
229
  UserPickerComponent,
221
- ArtifactCollectionPickerModalComponent], exports: [MessageItemComponent,
230
+ ArtifactCollectionPickerModalComponent,
231
+ ArtifactShareModalComponent], exports: [MessageItemComponent,
222
232
  MessageListComponent,
223
233
  MessageInputComponent,
234
+ MessageInputBoxComponent,
224
235
  SuggestedResponsesComponent,
225
236
  MentionDropdownComponent,
226
237
  ConversationWorkspaceComponent,
@@ -228,6 +239,7 @@ export class ConversationsModule {
228
239
  ConversationSidebarComponent,
229
240
  ConversationListComponent,
230
241
  ConversationChatAreaComponent,
242
+ ConversationEmptyStateComponent,
231
243
  ThreadPanelComponent,
232
244
  CollectionTreeComponent,
233
245
  CollectionViewComponent,
@@ -1 +1 @@
1
- {"version":3,"file":"conversations.module.js","sourceRoot":"","sources":["../../src/lib/conversations.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAEtE,yBAAyB;AACzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,aAAa;AACb,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,2BAA2B,EAAE,MAAM,oDAAoD,CAAC;AACjG,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EAAE,8BAA8B,EAAE,MAAM,yDAAyD,CAAC;AACzG,OAAO,EAAE,+BAA+B,EAAE,MAAM,2DAA2D,CAAC;AAC5G,OAAO,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAC;AACnG,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAClG,OAAO,EAAE,6BAA6B,EAAE,MAAM,4DAA4D,CAAC;AAC3G,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAC5F,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAC5F,OAAO,EAAE,+BAA+B,EAAE,MAAM,4DAA4D,CAAC;AAC7G,OAAO,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AAC5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,yDAAyD,CAAC;AACvG,OAAO,EAAE,4BAA4B,EAAE,MAAM,yDAAyD,CAAC;AACvG,OAAO,EAAE,4BAA4B,EAAE,MAAM,yDAAyD,CAAC;AACvG,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EAAE,yBAAyB,EAAE,MAAM,mDAAmD,CAAC;AAC9F,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,kDAAkD,CAAC;AAC9F,OAAO,EAAE,6BAA6B,EAAE,MAAM,qDAAqD,CAAC;AACpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,wDAAwD,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;AACpG,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;AACpG,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,6BAA6B,EAAE,MAAM,0DAA0D,CAAC;AACzG,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,sCAAsC,EAAE,MAAM,oEAAoE,CAAC;AAE5H,aAAa;AACb,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;;;AAEjF,0DAA0D;AAC1D,MAAM,UAAU,GAAG;IACjB,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,2BAA2B;IAC3B,wBAAwB;IACxB,8BAA8B;IAC9B,+BAA+B;IAC/B,4BAA4B;IAC5B,yBAAyB;IACzB,6BAA6B;IAC7B,oBAAoB;IACpB,uBAAuB;IACvB,uBAAuB;IACvB,+BAA+B;IAC/B,wBAAwB;IACxB,4BAA4B;IAC5B,4BAA4B;IAC5B,4BAA4B;IAC5B,wBAAwB;IACxB,yBAAyB;IACzB,0DAA0D;IAC1D,sBAAsB;IACtB,mBAAmB;IACnB,0BAA0B;IAC1B,6BAA6B;IAC7B,yBAAyB;IACzB,mBAAmB;IACnB,qBAAqB;IACrB,oBAAoB;IACpB,oBAAoB;IACpB,0BAA0B;IAC1B,0BAA0B;IAC1B,cAAc;IACd,oBAAoB;CACrB,CAAC;AAuCF,MAAM,OAAO,mBAAmB;6EAAnB,mBAAmB;4DAAnB,mBAAmB;gEA/B5B,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,YAAY;YACZ,YAAY;YACZ,YAAY;YACZ,aAAa;YACb,YAAY;YACZ,YAAY;YACZ,gBAAgB;YAChB,eAAe;YACf,kBAAkB;YAClB,aAAa;YACb,gBAAgB;YAChB,yBAAyB;YACzB,gBAAgB;YAChB,eAAe;YACf,cAAc,CAAC,OAAO,EAAE;YACxB,wBAAwB;YACxB,sBAAsB;YACtB,6BAA6B;YAC7B,mBAAmB;YACnB,sCAAsC;;iFAS7B,mBAAmB;cArC/B,QAAQ;eAAC;gBACR,YAAY,EAAE;oBACZ,GAAG,UAAU;oBACb,uBAAuB;iBACxB;gBACD,OAAO,EAAE;oBACP,YAAY;oBACZ,WAAW;oBACX,mBAAmB;oBACnB,YAAY;oBACZ,YAAY;oBACZ,YAAY;oBACZ,aAAa;oBACb,YAAY;oBACZ,YAAY;oBACZ,gBAAgB;oBAChB,eAAe;oBACf,kBAAkB;oBAClB,aAAa;oBACb,gBAAgB;oBAChB,yBAAyB;oBACzB,gBAAgB;oBAChB,eAAe;oBACf,cAAc,CAAC,OAAO,EAAE;oBACxB,wBAAwB;oBACxB,sBAAsB;oBACtB,6BAA6B;oBAC7B,mBAAmB;oBACnB,sCAAsC;iBACvC;gBACD,OAAO,EAAE;oBACP,GAAG,UAAU;oBACb,uBAAuB;oBACvB,wBAAwB;oBACxB,sBAAsB;iBACvB;aACF;;wFACY,mBAAmB,mBAzE9B,oBAAoB;QACpB,oBAAoB;QACpB,qBAAqB;QACrB,2BAA2B;QAC3B,wBAAwB;QACxB,8BAA8B;QAC9B,+BAA+B;QAC/B,4BAA4B;QAC5B,yBAAyB;QACzB,6BAA6B;QAC7B,oBAAoB;QACpB,uBAAuB;QACvB,uBAAuB;QACvB,+BAA+B;QAC/B,wBAAwB;QACxB,4BAA4B;QAC5B,4BAA4B;QAC5B,4BAA4B;QAC5B,wBAAwB;QACxB,yBAAyB;QACzB,0DAA0D;QAC1D,sBAAsB;QACtB,mBAAmB;QACnB,0BAA0B;QAC1B,6BAA6B;QAC7B,yBAAyB;QACzB,mBAAmB;QACnB,qBAAqB;QACrB,oBAAoB;QACpB,oBAAoB;QACpB,0BAA0B;QAC1B,0BAA0B;QAC1B,cAAc;QACd,oBAAoB,EAMlB,uBAAuB,aAGvB,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,aAAa;QACb,YAAY;QACZ,YAAY;QACZ,gBAAgB;QAChB,eAAe;QACf,kBAAkB;QAClB,aAAa;QACb,gBAAgB;QAChB,yBAAyB;QACzB,gBAAgB;QAChB,eAAe;QAEf,wBAAwB;QACxB,sBAAsB;QACtB,6BAA6B;QAC7B,mBAAmB;QACnB,sCAAsC,aAhExC,oBAAoB;QACpB,oBAAoB;QACpB,qBAAqB;QACrB,2BAA2B;QAC3B,wBAAwB;QACxB,8BAA8B;QAC9B,+BAA+B;QAC/B,4BAA4B;QAC5B,yBAAyB;QACzB,6BAA6B;QAC7B,oBAAoB;QACpB,uBAAuB;QACvB,uBAAuB;QACvB,+BAA+B;QAC/B,wBAAwB;QACxB,4BAA4B;QAC5B,4BAA4B;QAC5B,4BAA4B;QAC5B,wBAAwB;QACxB,yBAAyB;QACzB,0DAA0D;QAC1D,sBAAsB;QACtB,mBAAmB;QACnB,0BAA0B;QAC1B,6BAA6B;QAC7B,yBAAyB;QACzB,mBAAmB;QACnB,qBAAqB;QACrB,oBAAoB;QACpB,oBAAoB;QACpB,0BAA0B;QAC1B,0BAA0B;QAC1B,cAAc;QACd,oBAAoB,EAmClB,uBAAuB;QACvB,wBAAwB;QACxB,sBAAsB"}
1
+ {"version":3,"file":"conversations.module.js","sourceRoot":"","sources":["../../src/lib/conversations.module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ import { UserInfo } from '@memberjunction/core';
2
+ import { ArtifactPermissionEntity } from '@memberjunction/core-entities';
3
+ import { CollectionPermissionService } from './collection-permission.service';
4
+ import * as i0 from "@angular/core";
5
+ export interface ArtifactPermission {
6
+ id: string;
7
+ artifactId: string;
8
+ userId: string;
9
+ userName: string;
10
+ canRead: boolean;
11
+ canEdit: boolean;
12
+ canShare: boolean;
13
+ sharedByUserId: string | null;
14
+ sharedByUserName: string | null;
15
+ sharedAt: Date;
16
+ }
17
+ export interface EffectivePermission extends ArtifactPermission {
18
+ source: 'owner' | 'explicit' | 'collection';
19
+ collectionName?: string;
20
+ }
21
+ export interface ArtifactPermissionSet {
22
+ canRead: boolean;
23
+ canEdit: boolean;
24
+ canShare: boolean;
25
+ }
26
+ export declare class ArtifactPermissionService {
27
+ private collectionPermissionService;
28
+ constructor(collectionPermissionService: CollectionPermissionService);
29
+ /**
30
+ * Load all explicit permissions for an artifact
31
+ */
32
+ loadPermissions(artifactId: string, currentUser: UserInfo): Promise<ArtifactPermission[]>;
33
+ /**
34
+ * Check if user has specific permission for an artifact (HYBRID CHECK)
35
+ * Checks in order: Owner > Explicit Permission > Collection Inheritance
36
+ */
37
+ checkPermission(artifactId: string, userId: string, permission: 'read' | 'edit' | 'share', currentUser: UserInfo): Promise<boolean>;
38
+ /**
39
+ * Get explicit permission record for a user on an artifact
40
+ */
41
+ getExplicitPermission(artifactId: string, userId: string, currentUser: UserInfo): Promise<ArtifactPermission | null>;
42
+ /**
43
+ * Get all effective permissions for an artifact (owner + explicit + inherited)
44
+ */
45
+ getEffectiveUsers(artifactId: string, currentUser: UserInfo): Promise<EffectivePermission[]>;
46
+ /**
47
+ * Grant explicit permission to a user
48
+ */
49
+ grantPermission(artifactId: string, userId: string, permissions: ArtifactPermissionSet, sharedByUserId: string, currentUser: UserInfo): Promise<ArtifactPermissionEntity>;
50
+ /**
51
+ * Update existing permission
52
+ */
53
+ updatePermission(permissionId: string, permissions: ArtifactPermissionSet, currentUser: UserInfo): Promise<boolean>;
54
+ /**
55
+ * Revoke explicit permission
56
+ */
57
+ revokePermission(permissionId: string, currentUser: UserInfo): Promise<boolean>;
58
+ /**
59
+ * Validate that requested permissions don't exceed granter's permissions
60
+ */
61
+ validatePermissions(requested: ArtifactPermissionSet, granter: ArtifactPermissionSet, isOwner: boolean): boolean;
62
+ /**
63
+ * Get available permissions for a user to grant based on their own permissions
64
+ */
65
+ getAvailablePermissions(userPermissions: ArtifactPermissionSet, isOwner: boolean): string[];
66
+ /**
67
+ * Check if user is owner of artifact
68
+ */
69
+ isOwner(artifactId: string, userId: string, currentUser: UserInfo): Promise<boolean>;
70
+ /**
71
+ * Get all permissions for current user on an artifact (convenience method for UI)
72
+ */
73
+ getUserPermissions(artifactId: string, currentUser: UserInfo): Promise<ArtifactPermissionSet>;
74
+ /**
75
+ * Helper: Get artifact record
76
+ */
77
+ private getArtifact;
78
+ /**
79
+ * Helper: Get all collections containing this artifact
80
+ */
81
+ private getArtifactCollections;
82
+ /**
83
+ * Helper: Check if permission set has specific permission
84
+ */
85
+ private hasPermission;
86
+ /**
87
+ * Helper: Check if collection permission has specific permission
88
+ */
89
+ private hasCollectionPermission;
90
+ private mapToPermission;
91
+ static ɵfac: i0.ɵɵFactoryDeclaration<ArtifactPermissionService, never>;
92
+ static ɵprov: i0.ɵɵInjectableDeclaration<ArtifactPermissionService>;
93
+ }
94
+ //# sourceMappingURL=artifact-permission.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-permission.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/artifact-permission.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,294 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { RunView, Metadata } from '@memberjunction/core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./collection-permission.service";
5
+ export class ArtifactPermissionService {
6
+ collectionPermissionService;
7
+ constructor(collectionPermissionService) {
8
+ this.collectionPermissionService = collectionPermissionService;
9
+ }
10
+ /**
11
+ * Load all explicit permissions for an artifact
12
+ */
13
+ async loadPermissions(artifactId, currentUser) {
14
+ const rv = new RunView();
15
+ const result = await rv.RunView({
16
+ EntityName: 'MJ: Artifact Permissions',
17
+ ExtraFilter: `ArtifactID='${artifactId}'`,
18
+ OrderBy: '__mj_CreatedAt ASC',
19
+ ResultType: 'entity_object'
20
+ }, currentUser);
21
+ if (result.Success && result.Results) {
22
+ return result.Results.map(p => this.mapToPermission(p));
23
+ }
24
+ return [];
25
+ }
26
+ /**
27
+ * Check if user has specific permission for an artifact (HYBRID CHECK)
28
+ * Checks in order: Owner > Explicit Permission > Collection Inheritance
29
+ */
30
+ async checkPermission(artifactId, userId, permission, currentUser) {
31
+ // 1. Check ownership - owner has all permissions
32
+ const artifact = await this.getArtifact(artifactId, currentUser);
33
+ if (artifact && artifact.UserID === userId) {
34
+ return true;
35
+ }
36
+ // 2. Check explicit artifact permission
37
+ const explicit = await this.getExplicitPermission(artifactId, userId, currentUser);
38
+ if (explicit) {
39
+ return this.hasPermission(explicit, permission);
40
+ }
41
+ // 3. Check collection permission inheritance
42
+ const collections = await this.getArtifactCollections(artifactId, currentUser);
43
+ for (const collection of collections) {
44
+ const collectionPermission = await this.collectionPermissionService.checkPermission(collection.CollectionID, userId, currentUser);
45
+ if (collectionPermission && this.hasCollectionPermission(collectionPermission, permission)) {
46
+ return true; // Inherited from collection
47
+ }
48
+ }
49
+ // 4. No access
50
+ return false;
51
+ }
52
+ /**
53
+ * Get explicit permission record for a user on an artifact
54
+ */
55
+ async getExplicitPermission(artifactId, userId, currentUser) {
56
+ const rv = new RunView();
57
+ const result = await rv.RunView({
58
+ EntityName: 'MJ: Artifact Permissions',
59
+ ExtraFilter: `ArtifactID='${artifactId}' AND UserID='${userId}'`,
60
+ MaxRows: 1,
61
+ ResultType: 'entity_object'
62
+ }, currentUser);
63
+ if (result.Success && result.Results && result.Results.length > 0) {
64
+ return this.mapToPermission(result.Results[0]);
65
+ }
66
+ return null;
67
+ }
68
+ /**
69
+ * Get all effective permissions for an artifact (owner + explicit + inherited)
70
+ */
71
+ async getEffectiveUsers(artifactId, currentUser) {
72
+ const effectivePermissions = [];
73
+ const seenUsers = new Set();
74
+ // 1. Add owner
75
+ const artifact = await this.getArtifact(artifactId, currentUser);
76
+ if (artifact && artifact.UserID) {
77
+ effectivePermissions.push({
78
+ id: '', // No permission record for owner
79
+ artifactId: artifactId,
80
+ userId: artifact.UserID,
81
+ userName: artifact.User || 'Owner',
82
+ canRead: true,
83
+ canEdit: true,
84
+ canShare: true,
85
+ sharedByUserId: null,
86
+ sharedByUserName: null,
87
+ sharedAt: artifact.__mj_CreatedAt,
88
+ source: 'owner'
89
+ });
90
+ seenUsers.add(artifact.UserID);
91
+ }
92
+ // 2. Add explicit permissions
93
+ const explicitPerms = await this.loadPermissions(artifactId, currentUser);
94
+ for (const perm of explicitPerms) {
95
+ if (!seenUsers.has(perm.userId)) {
96
+ effectivePermissions.push({
97
+ ...perm,
98
+ source: 'explicit'
99
+ });
100
+ seenUsers.add(perm.userId);
101
+ }
102
+ }
103
+ // 3. Add collection-inherited permissions
104
+ const collections = await this.getArtifactCollections(artifactId, currentUser);
105
+ for (const collection of collections) {
106
+ const collectionPerms = await this.collectionPermissionService.loadPermissions(collection.CollectionID, currentUser);
107
+ for (const collPerm of collectionPerms) {
108
+ if (!seenUsers.has(collPerm.userId)) {
109
+ effectivePermissions.push({
110
+ id: '',
111
+ artifactId: artifactId,
112
+ userId: collPerm.userId,
113
+ userName: collPerm.userName,
114
+ canRead: collPerm.canRead,
115
+ canEdit: collPerm.canEdit,
116
+ canShare: collPerm.canShare,
117
+ sharedByUserId: collPerm.sharedByUserId,
118
+ sharedByUserName: collPerm.sharedByUserName,
119
+ sharedAt: collPerm.sharedAt,
120
+ source: 'collection',
121
+ collectionName: collection.Collection || 'Unknown Collection'
122
+ });
123
+ seenUsers.add(collPerm.userId);
124
+ }
125
+ }
126
+ }
127
+ return effectivePermissions;
128
+ }
129
+ /**
130
+ * Grant explicit permission to a user
131
+ */
132
+ async grantPermission(artifactId, userId, permissions, sharedByUserId, currentUser) {
133
+ const md = new Metadata();
134
+ const permission = await md.GetEntityObject('MJ: Artifact Permissions', currentUser);
135
+ permission.ArtifactID = artifactId;
136
+ permission.UserID = userId;
137
+ permission.CanRead = permissions.canRead;
138
+ permission.CanEdit = permissions.canEdit;
139
+ permission.CanShare = permissions.canShare;
140
+ permission.SharedByUserID = sharedByUserId;
141
+ const saved = await permission.Save();
142
+ if (!saved) {
143
+ throw new Error(permission.LatestResult?.Message || 'Failed to grant permission');
144
+ }
145
+ return permission;
146
+ }
147
+ /**
148
+ * Update existing permission
149
+ */
150
+ async updatePermission(permissionId, permissions, currentUser) {
151
+ const md = new Metadata();
152
+ const permission = await md.GetEntityObject('MJ: Artifact Permissions', currentUser);
153
+ await permission.Load(permissionId);
154
+ permission.CanRead = permissions.canRead;
155
+ permission.CanEdit = permissions.canEdit;
156
+ permission.CanShare = permissions.canShare;
157
+ return await permission.Save();
158
+ }
159
+ /**
160
+ * Revoke explicit permission
161
+ */
162
+ async revokePermission(permissionId, currentUser) {
163
+ const md = new Metadata();
164
+ const permission = await md.GetEntityObject('MJ: Artifact Permissions', currentUser);
165
+ await permission.Load(permissionId);
166
+ return await permission.Delete();
167
+ }
168
+ /**
169
+ * Validate that requested permissions don't exceed granter's permissions
170
+ */
171
+ validatePermissions(requested, granter, isOwner) {
172
+ if (isOwner)
173
+ return true; // Owner can grant anything
174
+ // Can't grant permissions you don't have
175
+ if (requested.canEdit && !granter.canEdit)
176
+ return false;
177
+ if (requested.canShare && !granter.canShare)
178
+ return false;
179
+ return true;
180
+ }
181
+ /**
182
+ * Get available permissions for a user to grant based on their own permissions
183
+ */
184
+ getAvailablePermissions(userPermissions, isOwner) {
185
+ if (isOwner) {
186
+ return ['Read', 'Edit', 'Share'];
187
+ }
188
+ const available = ['Read']; // Always have read
189
+ if (userPermissions.canEdit)
190
+ available.push('Edit');
191
+ if (userPermissions.canShare)
192
+ available.push('Share');
193
+ return available;
194
+ }
195
+ /**
196
+ * Check if user is owner of artifact
197
+ */
198
+ async isOwner(artifactId, userId, currentUser) {
199
+ const artifact = await this.getArtifact(artifactId, currentUser);
200
+ return artifact ? artifact.UserID === userId : false;
201
+ }
202
+ /**
203
+ * Get all permissions for current user on an artifact (convenience method for UI)
204
+ */
205
+ async getUserPermissions(artifactId, currentUser) {
206
+ const [canRead, canEdit, canShare] = await Promise.all([
207
+ this.checkPermission(artifactId, currentUser.ID, 'read', currentUser),
208
+ this.checkPermission(artifactId, currentUser.ID, 'edit', currentUser),
209
+ this.checkPermission(artifactId, currentUser.ID, 'share', currentUser)
210
+ ]);
211
+ return { canRead, canEdit, canShare };
212
+ }
213
+ /**
214
+ * Helper: Get artifact record
215
+ */
216
+ async getArtifact(artifactId, currentUser) {
217
+ const rv = new RunView();
218
+ const result = await rv.RunView({
219
+ EntityName: 'MJ: Artifacts',
220
+ ExtraFilter: `ID='${artifactId}'`,
221
+ MaxRows: 1,
222
+ ResultType: 'entity_object'
223
+ }, currentUser);
224
+ if (result.Success && result.Results && result.Results.length > 0) {
225
+ return result.Results[0];
226
+ }
227
+ return null;
228
+ }
229
+ /**
230
+ * Helper: Get all collections containing this artifact
231
+ */
232
+ async getArtifactCollections(artifactId, currentUser) {
233
+ const rv = new RunView();
234
+ const result = await rv.RunView({
235
+ EntityName: 'MJ: Collection Artifacts',
236
+ ExtraFilter: `ArtifactID='${artifactId}'`,
237
+ ResultType: 'entity_object'
238
+ }, currentUser);
239
+ return result.Success && result.Results ? result.Results : [];
240
+ }
241
+ /**
242
+ * Helper: Check if permission set has specific permission
243
+ */
244
+ hasPermission(permission, type) {
245
+ switch (type) {
246
+ case 'read':
247
+ return permission.canRead;
248
+ case 'edit':
249
+ return permission.canEdit;
250
+ case 'share':
251
+ return permission.canShare;
252
+ default:
253
+ return false;
254
+ }
255
+ }
256
+ /**
257
+ * Helper: Check if collection permission has specific permission
258
+ */
259
+ hasCollectionPermission(permission, type) {
260
+ switch (type) {
261
+ case 'read':
262
+ return permission.canRead;
263
+ case 'edit':
264
+ return permission.canEdit;
265
+ case 'share':
266
+ return permission.canShare;
267
+ default:
268
+ return false;
269
+ }
270
+ }
271
+ mapToPermission(entity) {
272
+ return {
273
+ id: entity.ID,
274
+ artifactId: entity.ArtifactID,
275
+ userId: entity.UserID,
276
+ userName: entity.User || '',
277
+ canRead: entity.CanRead,
278
+ canEdit: entity.CanEdit,
279
+ canShare: entity.CanShare,
280
+ sharedByUserId: entity.SharedByUserID || null,
281
+ sharedByUserName: entity.SharedByUser || null,
282
+ sharedAt: entity.__mj_CreatedAt
283
+ };
284
+ }
285
+ static ɵfac = function ArtifactPermissionService_Factory(t) { return new (t || ArtifactPermissionService)(i0.ɵɵinject(i1.CollectionPermissionService)); };
286
+ static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ArtifactPermissionService, factory: ArtifactPermissionService.ɵfac, providedIn: 'root' });
287
+ }
288
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ArtifactPermissionService, [{
289
+ type: Injectable,
290
+ args: [{
291
+ providedIn: 'root'
292
+ }]
293
+ }], () => [{ type: i1.CollectionPermissionService }], null); })();
294
+ //# sourceMappingURL=artifact-permission.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-permission.service.js","sourceRoot":"","sources":["../../../src/lib/services/artifact-permission.service.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,14 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import { ArtifactEntity } from '@memberjunction/core-entities';
3
3
  import { UserInfo } from '@memberjunction/core';
4
+ import { ArtifactPermissionService } from './artifact-permission.service';
4
5
  import * as i0 from "@angular/core";
5
6
  /**
6
7
  * State management for artifacts and the artifact panel
7
- * Handles artifact CRUD operations and caching
8
+ * Handles artifact CRUD operations and caching with permission enforcement
8
9
  */
9
10
  export declare class ArtifactStateService {
11
+ private artifactPermissionService;
10
12
  private _activeArtifactId$;
11
13
  private _activeVersionNumber$;
12
14
  private _artifacts$;
@@ -17,7 +19,28 @@ export declare class ArtifactStateService {
17
19
  readonly isPanelOpen$: Observable<boolean>;
18
20
  readonly panelMode$: Observable<"view" | "edit">;
19
21
  readonly activeArtifact$: Observable<ArtifactEntity | null>;
20
- constructor();
22
+ constructor(artifactPermissionService: ArtifactPermissionService);
23
+ /**
24
+ * Check if current user can read an artifact
25
+ * @param artifactId The artifact ID
26
+ * @param currentUser The current user context
27
+ * @returns True if user has read permission
28
+ */
29
+ canReadArtifact(artifactId: string, currentUser: UserInfo): Promise<boolean>;
30
+ /**
31
+ * Check if current user can edit an artifact
32
+ * @param artifactId The artifact ID
33
+ * @param currentUser The current user context
34
+ * @returns True if user has edit permission
35
+ */
36
+ canEditArtifact(artifactId: string, currentUser: UserInfo): Promise<boolean>;
37
+ /**
38
+ * Check if current user can share an artifact
39
+ * @param artifactId The artifact ID
40
+ * @param currentUser The current user context
41
+ * @returns True if user has share permission
42
+ */
43
+ canShareArtifact(artifactId: string, currentUser: UserInfo): Promise<boolean>;
21
44
  /**
22
45
  * Opens an artifact in the panel
23
46
  * @param id The artifact ID
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-state.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/artifact-state.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,UAAU,EAAiB,MAAM,MAAM,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAqB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;;AAEnE;;;GAGG;AACH,qBAGa,oBAAoB;IAC/B,OAAO,CAAC,kBAAkB,CAA4C;IACtE,OAAO,CAAC,qBAAqB,CAA4C;IACzE,OAAO,CAAC,WAAW,CAA+D;IAClF,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,WAAW,CAAgD;IAGnE,SAAgB,iBAAiB,4BAA0C;IAC3E,SAAgB,oBAAoB,4BAA6C;IACjF,SAAgB,YAAY,sBAAqC;IACjE,SAAgB,UAAU,8BAAmC;IAG7D,SAAgB,eAAe,EAAE,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,CAMhE;;IAIF;;;;OAIG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAMtD;;OAEG;IACH,aAAa,IAAI,IAAI;IAOrB;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIzC;;;OAGG;IACH,aAAa,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAM7C;;;OAGG;IACH,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAMtC;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;;;;OAKG;IACG,4BAA4B,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IA0B5G;;;;;OAKG;IACG,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IA0CxG;;;;;OAKG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAiBrF;;;;;OAKG;IACG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;IAenG;;;;;;OAMG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB3G;;;;;OAKG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAqBzE;;;;;OAKG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAarG;;;;;OAKG;IACG,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;yCAlS/F,oBAAoB;6CAApB,oBAAoB;CA6ThC"}
1
+ {"version":3,"file":"artifact-state.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/artifact-state.service.ts"],"names":[],"mappings":"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"}