Skip to content

Commit 6ada07a

Browse files
author
Piotr Siatka
committed
Fix OneDrive next page invalid data.
Fix TSLint warnings. Fix bugs.
1 parent de169ed commit 6ada07a

File tree

4 files changed

+24
-14
lines changed

4 files changed

+24
-14
lines changed

src/controls/filePicker/OneDriveFilesTab/OneDriveFilesTab.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export class OneDriveFilesTab extends React.Component<IOneDriveFilesTabProps, IO
3838
fileLeafRef: libraryTitle,
3939
docIcon: "",
4040
fileRef: "",
41-
}
41+
};
4242

4343
const breadcrumbItems = this.state.breadcrumbItems;
4444
// Add OneDrive folder as a first node
@@ -48,14 +48,14 @@ export class OneDriveFilesTab extends React.Component<IOneDriveFilesTabProps, IO
4848
text: oneDriveFolderData.fileLeafRef,
4949
key: oneDriveFolderData.absoluteRef
5050
};
51-
breadcrumbNode.onClick = () => { this.onBreadcrumpItemClick(breadcrumbNode); }
51+
breadcrumbNode.onClick = () => { this.onBreadcrumpItemClick(breadcrumbNode); };
5252
breadcrumbItems.push(breadcrumbNode);
5353

5454
this.setState({
5555
libraryAbsolutePath: libraryAbsolutePath,
5656
folderName: folderPath,
5757
libraryTitle
58-
})
58+
});
5959
}
6060

6161
public render(): React.ReactElement<IOneDriveFilesTabProps> {
@@ -161,7 +161,7 @@ export class OneDriveFilesTab extends React.Component<IOneDriveFilesTabProps, IO
161161
text: folder.fileLeafRef,
162162
key: folder.absoluteRef
163163
};
164-
breadcrumbNode.onClick = () => { this.onBreadcrumpItemClick(breadcrumbNode); }
164+
breadcrumbNode.onClick = () => { this.onBreadcrumpItemClick(breadcrumbNode); };
165165
breadcrumbItems.push(breadcrumbNode);
166166
}
167167

src/controls/filePicker/SiteFilePickerTab/SiteFilePickerTab.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ export default class SiteFilePickerTab extends React.Component<ISiteFilePickerTa
2525
isCurrentItem: true,
2626
text: props.context.pageContext.web.title,
2727
key: props.context.pageContext.web.id.toString()
28-
}
29-
breadcrumbSiteNode.onClick = () => { this.onBreadcrumpItemClick(breadcrumbSiteNode); }
28+
};
29+
breadcrumbSiteNode.onClick = () => { this.onBreadcrumpItemClick(breadcrumbSiteNode); };
3030

3131
this.state = {
3232
libraryAbsolutePath: undefined,
@@ -144,7 +144,7 @@ export default class SiteFilePickerTab extends React.Component<ISiteFilePickerTa
144144
text: folder.fileLeafRef,
145145
key: folder.absoluteRef
146146
};
147-
breadcrumbNode.onClick = () => { this.onBreadcrumpItemClick(breadcrumbNode); }
147+
breadcrumbNode.onClick = () => { this.onBreadcrumpItemClick(breadcrumbNode); };
148148
breadcrumbItems.push(breadcrumbNode);
149149
}
150150

@@ -169,7 +169,7 @@ export default class SiteFilePickerTab extends React.Component<ISiteFilePickerTa
169169
text: library.title,
170170
key: library.serverRelativeUrl
171171
};
172-
breadcrumbNode.onClick = () => { this.onBreadcrumpItemClick(breadcrumbNode); }
172+
breadcrumbNode.onClick = () => { this.onBreadcrumpItemClick(breadcrumbNode); };
173173
breadcrumbItems.push(breadcrumbNode);
174174
}
175175
this.setState({

src/services/FileBrowserService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ export class FileBrowserService {
7474
filesQueryResult = {
7575
items: items,
7676
nextHref: filesResult.ListData.NextHref
77-
}
77+
};
7878
} catch (error) {
7979
filesQueryResult.items = null;
8080
console.error(error.message);

src/services/OneDriveService.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,27 @@ export class OneDriveService extends FileBrowserService {
2626
/**
2727
* Gets files from OneDrive personal library
2828
*/
29-
public getListItems = async (libraryName: string, folderPath?: string, acceptedFilesExtensionsList?: string): Promise<FilesQueryResult> => {
29+
public getListItems = async (libraryName: string, folderPath?: string, acceptedFilesExtensionsList?: string, nextPageQueryStringParams?: string): Promise<FilesQueryResult> => {
3030
let filesQueryResult: FilesQueryResult = { items: [], nextHref: null };
3131
try {
3232
const oneDriveRootFolder = await this.getOneDriveRootFolderFullUrl();
3333
const encodedListUrl = encodeURIComponent(oneDriveRootFolder);
3434

35+
let queryStringParams = "";
3536
folderPath = folderPath ? folderPath : this.oneDriveRootFolderRelativeUrl;
3637
const encodedFolderPath = encodeURIComponent(folderPath);
3738

38-
const restApi: string = `${this.context.pageContext.web.absoluteUrl}/_api/SP.List.GetListDataAsStream?listFullUrl='${encodedListUrl}'&RootFolder=${encodedFolderPath}`;
39+
if (nextPageQueryStringParams) {
40+
// Remove start ? from the query params
41+
if (nextPageQueryStringParams.charAt(0) === "?") {
42+
nextPageQueryStringParams = nextPageQueryStringParams.substring(1);
43+
}
44+
queryStringParams = nextPageQueryStringParams;
45+
} else {
46+
queryStringParams = `RootFolder=${encodedFolderPath}`;
47+
}
3948

49+
const restApi = `${this.context.pageContext.web.absoluteUrl}/_api/SP.List.GetListDataAsStream?listFullUrl='${encodedListUrl}'&${queryStringParams}`;
4050
filesQueryResult = await this._getListDataAsStream(restApi, null, acceptedFilesExtensionsList);
4151
} catch (error) {
4252
filesQueryResult.items = null;
@@ -81,7 +91,7 @@ export class OneDriveService extends FileBrowserService {
8191
this.oneDriveRootFolderRelativeUrl = `${myDocumentsLibrary.ParentWebUrl}/${myDocumentsLibrary.Title}`;
8292
this.oneDriveRootFolderAbsoluteUrl = `${this.oneDrivePersonalUrl}${myDocumentsLibrary.Title}`;
8393
} catch (error) {
84-
console.error(`[FileBrowserService.getOneDrivePersonalUrl] Err='${error.message}'`)
94+
console.error(`[FileBrowserService.getOneDrivePersonalUrl] Err='${error.message}'`);
8595
this.oneDriveRootFolderAbsoluteUrl = null;
8696
}
8797
return this.oneDriveRootFolderAbsoluteUrl;
@@ -104,7 +114,7 @@ export class OneDriveService extends FileBrowserService {
104114
/**
105115
* Gets personal site path.
106116
*/
107-
protected getOneDrivePersonalUrl = async (): Promise<string> => {
117+
private getOneDrivePersonalUrl = async (): Promise<string> => {
108118
try {
109119
// Return result if already obtained
110120
if (this.oneDrivePersonalUrl) {
@@ -125,7 +135,7 @@ export class OneDriveService extends FileBrowserService {
125135

126136
this.oneDrivePersonalUrl = profileData.FollowPersonalSiteUrl;
127137
} catch (error) {
128-
console.error(`[FileBrowserService.getOneDrivePersonalUrl] Err='${error.message}'`)
138+
console.error(`[FileBrowserService.getOneDrivePersonalUrl] Err='${error.message}'`);
129139
this.oneDrivePersonalUrl = null;
130140
}
131141
return this.oneDrivePersonalUrl;

0 commit comments

Comments
 (0)