Skip to content

Commit e32f98e

Browse files
Merge pull request #765 from PermanentOrg/per-10298-clean
Create/edit/delete share links
2 parents 0fb32b1 + 7beb31a commit e32f98e

File tree

14 files changed

+516
-299
lines changed

14 files changed

+516
-299
lines changed

src/app/core/services/edit/edit.service.spec.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { AccountService } from '@shared/services/account/account.service';
99
import { RecordRepo } from '@shared/services/api/record.repo';
1010
import { MessageService } from '@shared/services/message/message.service';
1111
import { DataService } from '@shared/services/data/data.service';
12+
import { ShareLinksApiService } from '@root/app/share-links/services/share-links-api.service';
1213
import { FolderPickerService } from '../folder-picker/folder-picker.service';
1314

1415
const mockDataService = {
@@ -22,6 +23,7 @@ describe('EditService', () => {
2223
let service: EditService;
2324
let apiService: jasmine.SpyObj<ApiService>;
2425
let accountService: jasmine.SpyObj<AccountService>;
26+
let shareLinksApiService: jasmine.SpyObj<ShareLinksApiService>;
2527
beforeEach(() => {
2628
apiService = jasmine.createSpyObj('ApiService', ['record']);
2729
apiService.record = {
@@ -32,6 +34,14 @@ describe('EditService', () => {
3234
accountService.getArchive.and.returnValue(
3335
new ArchiveVO({ archiveId: 123 }),
3436
);
37+
38+
shareLinksApiService = jasmine.createSpyObj('ShareLinksApiService', [
39+
'generateShareLink',
40+
'getShareLinksById',
41+
'updateShareLink',
42+
'deleteShareLink',
43+
]);
44+
3545
const config = cloneDeep(Testing.BASE_TEST_CONFIG);
3646
config.imports.push(NgbTooltipModule);
3747
TestBed.configureTestingModule({
@@ -42,6 +52,7 @@ describe('EditService', () => {
4252
{ provide: DataService, useValue: mockDataService },
4353
{ provide: ApiService, useValue: apiService },
4454
{ provide: AccountService, useValue: accountService },
55+
{ provide: ShareLinksApiService, useValue: shareLinksApiService },
4556
],
4657
});
4758

src/app/core/services/edit/edit.service.ts

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { Subject } from 'rxjs';
44
import debug from 'debug';
55

66
import { ApiService } from '@shared/services/api/api.service';
7+
import { ShareLinksApiService } from '@root/app/share-links/services/share-links-api.service';
78
import { DataService } from '@shared/services/data/data.service';
89
import { MessageService } from '@shared/services/message/message.service';
910

@@ -16,6 +17,8 @@ import {
1617
ShareVO,
1718
} from '@root/app/models';
1819

20+
import { ShareLink } from '@root/app/share-links/models/share-link';
21+
1922
import {
2023
FolderResponse,
2124
RecordResponse,
@@ -124,6 +127,7 @@ export class EditService {
124127

125128
constructor(
126129
private api: ApiService,
130+
private shareApi: ShareLinksApiService,
127131
private message: MessageService,
128132
private folderPicker: FolderPickerService,
129133
private dataService: DataService,
@@ -252,11 +256,14 @@ export class EditService {
252256
const response: ShareResponse = await this.api.share.getShareLink(
253257
items[0],
254258
);
259+
const newShareLink = await this.fetchShareLinkFromResponse(response);
260+
255261
actionDeferred.resolve();
256262
this.dialog.open(SharingComponent, {
257263
data: {
258264
item: items[0],
259265
link: response.getShareByUrlVO(),
266+
newShare: newShareLink,
260267
},
261268
});
262269
break;
@@ -416,7 +423,7 @@ export class EditService {
416423
});
417424
}
418425

419-
if (recordResponse) {
426+
if (recordResponse && recordResponse.length > 0) {
420427
const res = recordResponse[0];
421428

422429
const newData: RecordVOData = {
@@ -521,17 +528,26 @@ export class EditService {
521528

522529
async openShareDialog(item: ItemVO) {
523530
const response = await this.api.share.getShareLink(item);
531+
const newShareLink = await this.fetchShareLinkFromResponse(response);
524532
if (this.device.isMobile()) {
525533
try {
526534
this.dialog.open(SharingComponent, {
527535
panelClass: 'dialog',
528-
data: { item, link: response.getShareByUrlVO() },
536+
data: {
537+
item,
538+
link: response.getShareByUrlVO(),
539+
newShare: newShareLink,
540+
},
529541
});
530542
} catch (err) {}
531543
} else {
532544
try {
533545
this.dialog.open(SharingDialogComponent, {
534-
data: { item, link: response.getShareByUrlVO() },
546+
data: {
547+
item,
548+
link: response.getShareByUrlVO(),
549+
newShare: newShareLink,
550+
},
535551
width: '600px',
536552
panelClass: 'dialog',
537553
});
@@ -548,6 +564,18 @@ export class EditService {
548564
});
549565
}
550566

567+
private async fetchShareLinkFromResponse(
568+
response: ShareResponse,
569+
): Promise<ShareLink | undefined> {
570+
if (response.getShareByUrlVO()) {
571+
const shareResponse = await this.shareApi.getShareLinksById([
572+
response.getShareByUrlVO().shareby_urlId,
573+
]);
574+
return shareResponse[0];
575+
}
576+
return undefined;
577+
}
578+
551579
async openTagsDialog(item: ItemVO, type: string) {
552580
this.dialog.open(EditTagsComponent, {
553581
data: { item, type },

src/app/file-browser/components/share-link-dropdown/share-link-dropdown.component.spec.ts

Lines changed: 0 additions & 92 deletions
This file was deleted.

src/app/file-browser/components/share-link-dropdown/share-link-dropdown.component.ts

Lines changed: 0 additions & 34 deletions
This file was deleted.

0 commit comments

Comments
 (0)