From 703bde5d540fa68e977e48f6939bd40cd06f4cb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenz=20H=C3=BCbschle-Schneider?= Date: Tue, 5 May 2020 10:08:56 +0200 Subject: [PATCH] imgur: clean up the module a bit --- js/imgur.js | 52 ++++++++++++++-------------------------------------- 1 file changed, 14 insertions(+), 38 deletions(-) diff --git a/js/imgur.js b/js/imgur.js index 1a5ba6a..6164568 100644 --- a/js/imgur.js +++ b/js/imgur.js @@ -6,11 +6,9 @@ var weechat = angular.module('weechat'); weechat.factory('imgur', ['$rootScope', 'settings', function($rootScope, settings) { var process = function(image, callback) { - // Is it an image? if (!image || !image.type.match(/image.*/)) return; - // New file reader var reader = new FileReader(); // When image is read @@ -18,21 +16,18 @@ weechat.factory('imgur', ['$rootScope', 'settings', function($rootScope, setting var image = event.target.result.split(',')[1]; upload(image, callback); }; - - // Read image as data url reader.readAsDataURL(image); - }; - var authenticate = function(xhr) { // API authorization, either via Client ID (anonymous) or access token // (add to user's imgur account), see also: // https://github.com/glowing-bear/glowing-bear/wiki/Getting-an-imgur-token-&-album-hash var accessToken = "164efef8979cd4b"; - // Check whether the user has provided an access token - if (settings.iToken.length > 37){ + // Check whether the user has configured a bearer token, if so, use it + // to add the image to the user's account + if (settings.iToken.length >= 38){ xhr.setRequestHeader("Authorization", "Bearer " + settings.iToken); } else { xhr.setRequestHeader("Authorization", "Client-ID " + accessToken); @@ -41,74 +36,57 @@ weechat.factory('imgur', ['$rootScope', 'settings', function($rootScope, setting // Upload image to imgur from base64 var upload = function( base64img, callback ) { - // Progress bars container var progressBars = document.getElementById("imgur-upload-progress"), currentProgressBar = document.createElement("div"); - - // Set progress bar attributes currentProgressBar.className='imgur-progress-bar'; currentProgressBar.style.width = '0'; - // Append progress bar progressBars.appendChild(currentProgressBar); - // Create new form data + // Assemble the form data for the upload var fd = new FormData(); - fd.append("image", base64img); // Append the file - fd.append("type", "base64"); // Set image type to base64 + fd.append("image", base64img); + fd.append("type", "base64"); // Add the image to the provided album if configured to do so - if (!isClientID && settings.iAlb.length >= 6) { + if (settings.iToken.length >= 38 && settings.iAlb.length >= 6) { fd.append("album", settings.iAlb); } - // Create new XMLHttpRequest - var xhttp = new XMLHttpRequest(); - // Post request to imgur api + var xhttp = new XMLHttpRequest(); xhttp.open("POST", "https://api.imgur.com/3/image", true); authenticate(xhttp); xhttp.setRequestHeader("Accept", "application/json"); // Handler for response xhttp.onload = function() { - // Remove progress bar - currentProgressBar.parentNode.removeChild(currentProgressBar); + progressBars.removeChild(currentProgressBar); // Check state and response status - if(xhttp.status === 200) { - - // Get response text + if (xhttp.status === 200) { var response = JSON.parse(xhttp.responseText); // Send link as message - if( response.data && response.data.link ) { - + if (response.data && response.data.link) { if (callback && typeof(callback) === "function") { callback(response.data.link.replace(/^http:/, "https:"), response.data.deletehash); } - } else { showErrorMsg(); } - } else { showErrorMsg(); } - }; - if( "upload" in xhttp ) { - // Set progress + if ("upload" in xhttp) { + // Update the progress bar if we can compute progress xhttp.upload.onprogress = function (event) { - // Check if we can compute progress if (event.lengthComputable) { - // Complete in percent var complete = (event.loaded / event.total * 100 | 0); - - // Set progress bar width currentProgressBar.style.width = complete + '%'; } }; @@ -119,8 +97,6 @@ weechat.factory('imgur', ['$rootScope', 'settings', function($rootScope, setting // Delete an image from imgur with the deletion link var deleteImage = function( deletehash, callback ) { - - // Create new XMLHttpRequest var xhttp = new XMLHttpRequest(); // Post request to imgur api @@ -131,7 +107,7 @@ weechat.factory('imgur', ['$rootScope', 'settings', function($rootScope, setting // Handler for response xhttp.onload = function() { // Check state and response status - if(xhttp.status === 200) { + if (xhttp.status === 200) { callback(deletehash); } else { showErrorMsg();