Skip to content

Commit d1070ff

Browse files
committed
fix(addons): Show addon icon in User Connected Addons page
1 parent 3fdcc68 commit d1070ff

File tree

5 files changed

+19
-10
lines changed

5 files changed

+19
-10
lines changed

src/app/shared/mappers/addon.mapper.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ export class AddonMapper {
5656
const displayName = (matchingService?.['display_name'] as string) || '';
5757
const credentialsFormat = (matchingService?.['credentials_format'] as string) || '';
5858
const supportedFeatures = (matchingService?.['supported_features'] as string[]) || [];
59+
const iconUrl = (matchingService?.['icon_url'] as string) || '';
5960

6061
return {
6162
type: response.type,
@@ -73,6 +74,7 @@ export class AddonMapper {
7374
externalServiceName,
7475
supportedFeatures,
7576
credentialsFormat,
77+
iconUrl,
7678
providerName: displayName,
7779
};
7880
}

src/app/shared/services/addons/addons.service.spec.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ describe('Service: Addons', () => {
9090
});
9191

9292
const request = httpMock.expectOne(
93-
'http://addons.localhost:8000/user-references/reference-id/authorized_storage_accounts/?include=external-storage-service&fields%5Bexternal-storage-services%5D=external_service_name,credentials_format'
93+
'http://addons.localhost:8000/user-references/reference-id/authorized_storage_accounts/?include=external-storage-service&fields%5Bexternal-storage-services%5D=external_service_name,credentials_format,icon_url'
9494
);
9595
expect(request.request.method).toBe('GET');
9696
request.flush(getAddonsAuthorizedStorageData());
@@ -103,7 +103,8 @@ describe('Service: Addons', () => {
103103
authorizedCapabilities: ['ACCESS', 'UPDATE'],
104104
authorizedOperationNames: ['list_root_items', 'get_item_info', 'list_child_items'],
105105
credentialsAvailable: true,
106-
credentialsFormat: '',
106+
credentialsFormat: 'OAUTH2',
107+
iconUrl: 'https://osf.io/assets/images/logo.svg',
107108
defaultRootFolder: '',
108109
displayName: 'Google Drive',
109110
externalServiceName: 'googledrive',
@@ -151,6 +152,7 @@ describe('Service: Addons', () => {
151152
authorizedOperationNames: ['list_root_items', 'get_item_info', 'list_child_items'],
152153
credentialsAvailable: true,
153154
credentialsFormat: '',
155+
iconUrl: '',
154156
defaultRootFolder: '',
155157
displayName: 'Google Drive',
156158
externalServiceName: '',

src/app/shared/services/addons/addons.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ export class AddonsService {
7979

8080
getAuthorizedAddons(addonType: string, referenceId: string): Observable<AuthorizedAccountModel[]> {
8181
const params = {
82-
[`fields[external-${addonType}-services]`]: 'external_service_name,credentials_format',
82+
[`fields[external-${addonType}-services]`]: 'external_service_name,credentials_format,icon_url',
8383
};
8484
return this.jsonApiService
8585
.get<

src/app/shared/stores/addons/addons.state.spec.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ describe('State: Addons', () => {
210210
expect(loading()).toBeTruthy();
211211

212212
const request = httpMock.expectOne(
213-
'http://addons.localhost:8000/user-references/reference-id/authorized_storage_accounts/?include=external-storage-service&fields%5Bexternal-storage-services%5D=external_service_name,credentials_format'
213+
'http://addons.localhost:8000/user-references/reference-id/authorized_storage_accounts/?include=external-storage-service&fields%5Bexternal-storage-services%5D=external_service_name,credentials_format,icon_url'
214214
);
215215
expect(request.request.method).toBe('GET');
216216
request.flush(getAddonsAuthorizedStorageData());
@@ -223,7 +223,7 @@ describe('State: Addons', () => {
223223
authorizedCapabilities: ['ACCESS', 'UPDATE'],
224224
authorizedOperationNames: ['list_root_items', 'get_item_info', 'list_child_items'],
225225
credentialsAvailable: true,
226-
credentialsFormat: '',
226+
credentialsFormat: 'OAUTH2',
227227
defaultRootFolder: '',
228228
displayName: 'Google Drive',
229229
externalServiceName: 'googledrive',
@@ -233,6 +233,7 @@ describe('State: Addons', () => {
233233
providerName: '',
234234
supportedFeatures: [],
235235
type: 'authorized-storage-accounts',
236+
iconUrl: 'https://osf.io/assets/images/logo.svg',
236237
})
237238
);
238239

@@ -259,7 +260,7 @@ describe('State: Addons', () => {
259260
expect(loading()).toBeTruthy();
260261

261262
const request = httpMock.expectOne(
262-
'http://addons.localhost:8000/user-references/reference-id/authorized_storage_accounts/?include=external-storage-service&fields%5Bexternal-storage-services%5D=external_service_name,credentials_format'
263+
'http://addons.localhost:8000/user-references/reference-id/authorized_storage_accounts/?include=external-storage-service&fields%5Bexternal-storage-services%5D=external_service_name,credentials_format,icon_url'
263264
);
264265
expect(request.request.method).toBe('GET');
265266

@@ -268,7 +269,7 @@ describe('State: Addons', () => {
268269
expect(result).toEqual({
269270
data: [],
270271
error:
271-
'Http failure response for http://addons.localhost:8000/user-references/reference-id/authorized_storage_accounts/?include=external-storage-service&fields%5Bexternal-storage-services%5D=external_service_name,credentials_format: 500 Server Error',
272+
'Http failure response for http://addons.localhost:8000/user-references/reference-id/authorized_storage_accounts/?include=external-storage-service&fields%5Bexternal-storage-services%5D=external_service_name,credentials_format,icon_url: 500 Server Error',
272273
isLoading: false,
273274
isSubmitting: false,
274275
});
@@ -303,7 +304,6 @@ describe('State: Addons', () => {
303304
authorizedCapabilities: ['ACCESS', 'UPDATE'],
304305
authorizedOperationNames: ['list_root_items', 'get_item_info', 'list_child_items'],
305306
credentialsAvailable: true,
306-
credentialsFormat: '',
307307
defaultRootFolder: '',
308308
displayName: 'Google Drive',
309309
externalServiceName: '',
@@ -313,6 +313,8 @@ describe('State: Addons', () => {
313313
providerName: '',
314314
supportedFeatures: [],
315315
type: 'authorized-storage-accounts',
316+
credentialsFormat: '', // No credentialsFormat in a PATCH response
317+
iconUrl: '', // No iconUrl in a PATCH response
316318
})
317319
);
318320

@@ -339,7 +341,7 @@ describe('State: Addons', () => {
339341
expect(loading()).toBeTruthy();
340342

341343
let request = httpMock.expectOne(
342-
'http://addons.localhost:8000/user-references/reference-id/authorized_storage_accounts/?include=external-storage-service&fields%5Bexternal-storage-services%5D=external_service_name,credentials_format'
344+
'http://addons.localhost:8000/user-references/reference-id/authorized_storage_accounts/?include=external-storage-service&fields%5Bexternal-storage-services%5D=external_service_name,credentials_format,icon_url'
343345
);
344346
expect(request.request.method).toBe('GET');
345347
request.flush(getAddonsAuthorizedStorageData());
@@ -358,7 +360,6 @@ describe('State: Addons', () => {
358360
authorizedCapabilities: ['ACCESS', 'UPDATE'],
359361
authorizedOperationNames: ['list_root_items', 'get_item_info', 'list_child_items'],
360362
credentialsAvailable: true,
361-
credentialsFormat: '',
362363
defaultRootFolder: '',
363364
displayName: 'Google Drive',
364365
externalServiceName: '',
@@ -368,6 +369,8 @@ describe('State: Addons', () => {
368369
providerName: '',
369370
supportedFeatures: [],
370371
type: 'authorized-storage-accounts',
372+
credentialsFormat: '', // No credentialsFormat in a PATCH response
373+
iconUrl: '', // No iconUrl in a PATCH response
371374
})
372375
);
373376

src/testing/data/addons/addons.authorized-storage.data.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,8 @@ const AuthorizedStorage = {
110110
id: '8aeb85e9-3a73-426f-a89b-5624b4b9d418',
111111
attributes: {
112112
external_service_name: 'googledrive',
113+
credentials_format: 'OAUTH2',
114+
icon_url: 'https://osf.io/assets/images/logo.svg',
113115
},
114116
links: {
115117
self: 'https://addons.staging4.osf.io/v1/external-storage-services/8aeb85e9-3a73-426f-a89b-5624b4b9d418',

0 commit comments

Comments
 (0)