Skip to content

Commit e861895

Browse files
committed
Feature update
1 parent 46dccd8 commit e861895

File tree

2 files changed

+51
-20
lines changed

2 files changed

+51
-20
lines changed

src/common/utilities/SPHelper.ts

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -385,16 +385,28 @@ export class SPHelper {
385385
}
386386

387387
private static _updateSessionStorageLoadedViewFields(loadedViewFields: { [viewId: string]: IFields }): void {
388-
const sessionStorage: any = window.sessionStorage;
389-
sessionStorage.setItem(Constants.LoadedViewFieldsKey, JSON.stringify(loadedViewFields));
388+
try {
389+
if (window.sessionStorage) {
390+
window.sessionStorage.setItem(Constants.LoadedViewFieldsKey, JSON.stringify(loadedViewFields));
391+
}
392+
} catch (error) {
393+
// do nothing, no need to stop fn execution
394+
}
390395
}
391396

392397
private static _getLoadedViewFieldsFromStorage(): { [viewId: string]: IFields } {
393-
const loadedViewFields = sessionStorage.getItem(Constants.LoadedViewFieldsKey);
394-
if (loadedViewFields) {
395-
return JSON.parse(loadedViewFields);
398+
try {
399+
if (window.sessionStorage) {
400+
const loadedViewFields = sessionStorage.getItem(Constants.LoadedViewFieldsKey);
401+
if (loadedViewFields) {
402+
return JSON.parse(loadedViewFields);
403+
}
404+
}
405+
else {
406+
return null;
407+
}
408+
} catch (error) {
409+
return null;
396410
}
397-
398-
return null;
399411
}
400412
}

src/services/SPTermStorePickerService.ts

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export default class SPTermStorePickerService {
3333
if (Environment.type !== EnvironmentType.Local) {
3434
{
3535
this.clientServiceUrl = this.context.pageContext.web.absoluteUrl + '/_vti_bin/client.svc/ProcessQuery';
36-
this.suggestionServiceUrl = this.context.pageContext.web.absoluteUrl + "/_vti_bin/TaxonomyInternalService.json/GetSuggestions";
36+
this.suggestionServiceUrl = this.context.pageContext.web.absoluteUrl + "/_vti_bin/TaxonomyInternalService.json/GetSuggestions";
3737
}
3838
}
3939
}
@@ -192,7 +192,7 @@ export default class SPTermStorePickerService {
192192
const termStoreResultTermSets: ITermSet[] = serviceJSONResponse.filter((r: { [x: string]: string; }) => r['_ObjectType_'] === 'SP.Taxonomy.TermSet');
193193

194194
if (termStoreResultTermSets.length > 0) {
195-
var termStoreResultTermSet = termStoreResultTermSets[0];
195+
let termStoreResultTermSet = termStoreResultTermSets[0];
196196
termStoreResultTermSet.Terms = [];
197197
// Retrieve the term collection results
198198
const termStoreResultTerms: ITerms[] = serviceJSONResponse.filter((r: { [x: string]: string; }) => r['_ObjectType_'] === 'SP.Taxonomy.TermCollection');
@@ -230,8 +230,13 @@ export default class SPTermStorePickerService {
230230
termStoreResultTermSet.Terms = terms;
231231
}
232232
}
233-
234-
sessionStorage.setItem(termsetId, JSON.stringify(termStoreResultTermSet));
233+
try {
234+
if (window.sessionStorage) {
235+
window.sessionStorage.setItem(termsetId, JSON.stringify(termStoreResultTermSet));
236+
}
237+
} catch (error) {
238+
// do nothing, sometimes storage quota exceed error if too many items
239+
}
235240
return termStoreResultTermSet;
236241
}
237242
return null;
@@ -283,11 +288,18 @@ export default class SPTermStorePickerService {
283288
}
284289

285290
private getTermsById(termId) {
286-
var terms = sessionStorage.getItem(termId);
287-
if (terms)
288-
return JSON.parse(terms);
289-
else
291+
try {
292+
if (window.sessionStorage) {
293+
let terms = window.sessionStorage.getItem(termId);
294+
if (terms) {
295+
return JSON.parse(terms);
296+
} else {
297+
return null;
298+
}
299+
}
300+
} catch (error) {
290301
return null;
302+
}
291303
}
292304

293305
private searchTermsBySearchText(terms, searchText) {
@@ -303,7 +315,7 @@ export default class SPTermStorePickerService {
303315
// If the running environment is local, load the data from the mock
304316
return SPTermStoreMockHttpClient.searchTermsByName(searchText);
305317
} else {
306-
var childTerms = this.getTermsById(termId);
318+
let childTerms = this.getTermsById(termId);
307319
if (childTerms) {
308320
return this.searchTermsBySearchText(childTerms, searchText);
309321
}
@@ -361,7 +373,14 @@ export default class SPTermStorePickerService {
361373
returnTerms.push(this.convertTermToPickerTerm(term));
362374
});
363375

364-
sessionStorage.setItem(anchorId, JSON.stringify(returnTerms));
376+
try {
377+
if (window.sessionStorage) {
378+
window.sessionStorage.setItem(anchorId, JSON.stringify(returnTerms));
379+
}
380+
}
381+
catch (error) {
382+
// do nothing
383+
}
365384
}
366385
} else {
367386
terms.forEach(term => {
@@ -396,14 +415,14 @@ export default class SPTermStorePickerService {
396415
return;
397416
}
398417
}
399-
if (termStore === undefined || termStore.length === 0) {
418+
if (termStore === undefined || termStore.length === 0) {
400419
resolve(null);
401420
return;
402421
}
403422

404423
let data = {
405424
start: searchText,
406-
lcid : this.context.pageContext.web.language, // TODO : get the user's navitation LCID. Here it's the default web language LCID
425+
lcid: this.context.pageContext.web.language, // TODO : get the user's navitation LCID. Here it's the default web language LCID
407426
sspList: this.cleanGuid(termStore[0].Id),
408427
termSetList: TermSetId,
409428
anchorId: this.props.anchorId ? this.props.anchorId : EmptyGuid,
@@ -579,7 +598,7 @@ export default class SPTermStorePickerService {
579598
if (term.Paths && term.Paths.length > 0) {
580599
const fullPath = term.Paths[0].replace(/^\[/, "").replace(/\]$/, "");
581600
const fullPathParts = fullPath.split(":");
582-
path = fullPathParts.join(";") + ";" + term.DefaultLabel;
601+
path = fullPathParts.join(";") + ";" + term.DefaultLabel;
583602
termSetName = fullPathParts[0];
584603
}
585604
return {

0 commit comments

Comments
 (0)