UNPKG

delta-store

Version:
83 lines (76 loc) 2.16 kB
/** * Created by Papa on 1/3/2016. */ import {GoogleDrive} from './GoogleDrive'; import {ApiConstants, GoogleApi} from '../GoogleApi'; import {DriveResponse} from './GoogleDriveModel'; import {DriveConstants} from './GoogleDriveModel'; import {GoogleSetupInfo} from '../GoogleSharingModel'; import {GoogleChangeListShareInfo} from '../GoogleSharingModel'; import {MimeTypes} from './GoogleDriveModel'; export class GoogleDriveAdaptor { constructor( private googleApi:GoogleApi, private googleDrive:GoogleDrive ) { } initialize( apiKey:string, clientId:string ):Promise<any> { return this.googleApi.authorizeApis(apiKey, clientId, ApiConstants.ALL_SCOPES).then(() => { let loadRequests = [ this.googleApi.loadApi('drive', DriveConstants.VERSION), this.googleApi.loadApi('drive-realtime,drive-share') ]; return Promise.all(loadRequests); }); } setup( setupInfo:GoogleSetupInfo ):Promise<DriveResponse> { return this.googleDrive.findOrCreateUniqueFolder(setupInfo.rootFolder); } listChangeLists( info:GoogleSetupInfo ):Promise<GoogleChangeListShareInfo[]> { return this.googleDrive.listFiles(info.sharedAppFolderId).then(( response:DriveResponse ) => { let files = response.result.files; if (!files || files.length === 0) { return []; } let shares:GoogleChangeListShareInfo[] = []; files.forEach(( file ) => { shares.push({ name: file.name, dbId: info.dbIdField, folderId: file.id }); }); return shares; }); } populateChangeListFileInfo( changeListInfo:GoogleChangeListShareInfo ):Promise<GoogleChangeListShareInfo> { return this.googleDrive.listFiles(changeListInfo.folderId).then(( response:DriveResponse ) => { let files = response.result.files; if (!files || files.length === 0) { return changeListInfo; } files.forEach(( file ) => { if (file.mimeType.indexOf(MimeTypes.REALTIME) === 0) { if (changeListInfo.realtimeFileId) { throw `Multiple Realtime files found for Change List: ${changeListInfo.name}`; } changeListInfo.realtimeFileId = file.id; } }); return changeListInfo; }); } }