♻️ backend,oo: split endEditing into add version and actual end, via "updateEditing" (#525)

This commit is contained in:
Eric Doughty-Papassideris
2024-09-17 17:37:20 +02:00
parent c9db0bf3d7
commit 816fb58e89
5 changed files with 56 additions and 27 deletions
@@ -21,6 +21,7 @@ export interface IDriveService {
get: (params: DriveRequestParams) => Promise<DriveFileType>;
createVersion: (params: { company_id: string; drive_file_id: string; file_id: string }) => Promise<DriveFileType['item']['last_version_cache']>;
beginEditingSession: (company_id: string, drive_file_id: string) => Promise<string>;
addEditingSessionVersion: (editing_session_key: string, url: string) => Promise<void>;
endEditing: (editing_session_key: string, url: string) => Promise<void>;
getByEditingSessionKey: (params: { company_id: string; editing_session_key: string; user_token?: string }) => Promise<DriveFileType['item']>;
}
@@ -54,6 +54,7 @@ class DriveService implements IDriveService {
try {
const resource = await apiService.post<{}, { editingSessionKey: string }>({
url: `/internal/services/documents/v1/companies/${company_id}/item/${drive_file_id}/editing_session`,
token: user_token,
payload: {
editorApplicationId: 'tdrive_onlyoffice',
appInstanceId: INSTANCE_ID ?? '',
@@ -82,7 +83,15 @@ class DriveService implements IDriveService {
}
}
public async endEditing(editing_session_key: string, url: string) {
public async addEditingSessionVersion(editing_session_key: string, url: string, user_token?: string) {
return this.updateEditing(editing_session_key, url, true, user_token);
}
public async endEditing(editing_session_key: string, url: string, user_token?: string) {
return this.updateEditing(editing_session_key, url, false, user_token);
}
private async updateEditing(editing_session_key: string, url: string, keepEditing: boolean, user_token?: string) {
try {
if (!url) {
throw Error('no url found');
@@ -109,9 +118,12 @@ class DriveService implements IDriveService {
logger.info('Saving file version to Twake Drive: ', filename);
const queryString = keepEditing ? '?keepEditing=true' : '';
await apiService.post({
url: `/internal/services/documents/v1/editing_session/${encodeURIComponent(editing_session_key)}`,
url: `/internal/services/documents/v1/editing_session/${encodeURIComponent(editing_session_key)}` + queryString,
payload: form,
token: user_token,
headers: form.getHeaders(),
});
} catch (error) {