mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-11 00:14:50 +03:00
Added Google Drive support
This commit is contained in:
parent
7107104e1a
commit
7348b9b8a4
12 changed files with 177 additions and 147 deletions
|
|
@ -347,7 +347,9 @@ function PopupsComposeViewModel()
|
|||
return this.dropboxEnabled();
|
||||
});
|
||||
|
||||
this.driveEnabled = ko.observable(false && Globals.bXMLHttpRequestSupported && !!RL.settingsGet('GoogleClientID'));
|
||||
this.driveEnabled = ko.observable(Globals.bXMLHttpRequestSupported &&
|
||||
!!RL.settingsGet('GoogleClientID') && !!RL.settingsGet('GoogleApiKey'));
|
||||
|
||||
this.driveVisible = ko.observable(false);
|
||||
|
||||
this.driveCommand = Utils.createCommand(this, function () {
|
||||
|
|
@ -994,7 +996,8 @@ PopupsComposeViewModel.prototype.onBuild = function ()
|
|||
|
||||
PopupsComposeViewModel.prototype.driveCallback = function (sAccessToken, oData)
|
||||
{
|
||||
if (oData && window.google && oData[window.google.picker.Response.ACTION] === window.google.picker.Action.PICKED &&
|
||||
if (oData && window.XMLHttpRequest && window.google &&
|
||||
oData[window.google.picker.Response.ACTION] === window.google.picker.Action.PICKED &&
|
||||
oData[window.google.picker.Response.DOCUMENTS] && oData[window.google.picker.Response.DOCUMENTS][0] &&
|
||||
oData[window.google.picker.Response.DOCUMENTS][0]['id'])
|
||||
{
|
||||
|
|
@ -1008,19 +1011,49 @@ PopupsComposeViewModel.prototype.driveCallback = function (sAccessToken, oData)
|
|||
oRequest.addEventListener('load', function() {
|
||||
if (oRequest && oRequest.responseText)
|
||||
{
|
||||
var oItem = JSON.parse(oRequest.responseText);
|
||||
var oItem = JSON.parse(oRequest.responseText), fExport = function (oItem, sMimeType, sExt) {
|
||||
if (oItem && oItem['exportLinks'])
|
||||
{
|
||||
if (oItem['exportLinks'][sMimeType])
|
||||
{
|
||||
oItem['downloadUrl'] = oItem['exportLinks'][sMimeType];
|
||||
oItem['title'] = oItem['title'] + '.' + sExt;
|
||||
oItem['mimeType'] = sMimeType;
|
||||
}
|
||||
else if (oItem['exportLinks']['application/pdf'])
|
||||
{
|
||||
oItem['downloadUrl'] = oItem['exportLinks']['application/pdf'];
|
||||
oItem['title'] = oItem['title'] + '.pdf';
|
||||
oItem['mimeType'] = 'application/pdf';
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if (oItem && !oItem['downloadUrl'] && oItem['mimeType'] && oItem['exportLinks'])
|
||||
{
|
||||
switch (oItem['mimeType'].toString().toLowerCase())
|
||||
{
|
||||
case 'application/vnd.google-apps.document':
|
||||
fExport(oItem, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'docx');
|
||||
break;
|
||||
case 'application/vnd.google-apps.spreadsheet':
|
||||
fExport(oItem, 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'xlsx');
|
||||
break;
|
||||
case 'application/vnd.google-apps.drawing':
|
||||
fExport(oItem, 'image/png', 'png');
|
||||
break;
|
||||
case 'application/vnd.google-apps.presentation':
|
||||
fExport(oItem, 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'pptx');
|
||||
break;
|
||||
default:
|
||||
fExport(oItem, 'application/pdf', 'pdf');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (oItem && oItem['downloadUrl'])
|
||||
{
|
||||
window.console.log(oItem['downloadUrl']);
|
||||
var oSubRequest = new window.XMLHttpRequest();
|
||||
oSubRequest.open('GET', oItem['downloadUrl']);
|
||||
oSubRequest.setRequestHeader('Authorization', 'Bearer ' + sAccessToken);
|
||||
oSubRequest.addEventListener('load', function() {
|
||||
window.console.log(oSubRequest);
|
||||
});
|
||||
|
||||
oSubRequest.send();
|
||||
// self.addDriveAttachment(oItem, sAccessToken);
|
||||
self.addDriveAttachment(oItem, sAccessToken);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
@ -1434,11 +1467,11 @@ PopupsComposeViewModel.prototype.addDriveAttachment = function (oDriveFile, sAcc
|
|||
},
|
||||
iAttachmentSizeLimit = Utils.pInt(RL.settingsGet('AttachmentLimit')),
|
||||
oAttachment = null,
|
||||
mSize = Utils.pInt(oDriveFile['fileSize'])
|
||||
mSize = oDriveFile['fileSize'] ? Utils.pInt(oDriveFile['fileSize']) : 0
|
||||
;
|
||||
|
||||
oAttachment = new ComposeAttachmentModel(
|
||||
oDriveFile['downloadUrl'], oDriveFile['originalFilename'], mSize
|
||||
oDriveFile['downloadUrl'], oDriveFile['title'], mSize
|
||||
);
|
||||
|
||||
oAttachment.fromMessage = false;
|
||||
|
|
@ -1464,7 +1497,8 @@ PopupsComposeViewModel.prototype.addDriveAttachment = function (oDriveFile, sAcc
|
|||
if (oData.Result[oAttachment.id])
|
||||
{
|
||||
bResult = true;
|
||||
oAttachment.tempName(oData.Result[oAttachment.id]);
|
||||
oAttachment.tempName(oData.Result[oAttachment.id][0]);
|
||||
oAttachment.size(Utils.pInt(oData.Result[oAttachment.id][1]));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue