@@ -1344,6 +1344,82 @@ ipc.on('freshImgurToken', (event, data) => {
13441344 localStorage . setItem ( 'imgurToken' , token ) ;
13451345} ) ;
13461346
1347+ ipc . on ( 'saveImgur' , ( event ) => {
1348+ isOnline ( ( err , status ) => {
1349+ if ( status !== true ) {
1350+ popUp ( popupWindow , popupText , `You're offline now. Try again later.` ) ;
1351+ } } ) ;
1352+
1353+ const time = new Date ( ) ;
1354+
1355+ let imToken = localStorage . getItem ( 'imgurToken' ) ;
1356+ hideControls ( activeShape , stage ) ;
1357+ activeShape = undefined ;
1358+ setDefaultSceneState ( ) ;
1359+
1360+ if ( imToken === null || imToken === undefined ) {
1361+ popUp ( popupWindow , popupText , 'Sign in to Imgur (Sign in to > Imgur)' ) ;
1362+ return ;
1363+ }
1364+
1365+ loader . style . transform = `scale(${ 1 / areaZoom } )` ;
1366+ loader . classList . add ( 'show' ) ;
1367+ loaderText . textContent = 'In process' ;
1368+
1369+ let imageSringData = workArea . toDataURL ( '' , 'image/png' ) ;
1370+ //Convert it to an arraybuffer
1371+ let timestamp = new Date ( ) . getTime ( ) ;
1372+ let difference ;
1373+ const imgUrl = "http://i.imgur.com/l5OqYoZ.jpg" ;
1374+ let xhr = new XMLHttpRequest ( ) ;
1375+ let pathToServer = 'https://api.imgur.com/3/upload' ;
1376+
1377+ let imageData = imageSringData . replace ( 'data:image/png;base64,' , '' ) ;
1378+
1379+ xhr . open ( 'POST' , pathToServer , true ) ;
1380+ xhr . setRequestHeader ( "Authorization" , "Bearer " + imToken ) ;
1381+ xhr . setRequestHeader ( 'Content-Type' , 'json' ) ;
1382+ let sendingData = {
1383+ image : imageData ,
1384+ type : 'base64'
1385+ } ;
1386+ xhr . send ( JSON . stringify ( sendingData ) ) ;
1387+ xhr . onload = ( ) => {
1388+ let resp = JSON . parse ( xhr . responseText ) ;
1389+ switch ( resp . status ) {
1390+ case 500 :
1391+ difference = Math . abs ( new Date ( ) - time ) ;
1392+ hideLoader ( difference , 'Server error😱' , loaderText ) ;
1393+ break ;
1394+
1395+ case 400 :
1396+ difference = Math . abs ( new Date ( ) - time ) ;
1397+ hideLoader ( difference , 'An impossible request 😱' , loaderText ) ;
1398+ break ;
1399+
1400+ case 401 :
1401+ difference = Math . abs ( new Date ( ) - time ) ;
1402+ hideLoader ( difference , 'Auth error 😱' , loaderText ) ;
1403+ break ;
1404+
1405+ case 200 :
1406+ if ( xhr ) {
1407+ let link = resp . data . link ;
1408+ clipboard . writeText ( link ) ;
1409+ difference = Math . abs ( new Date ( ) - time ) ;
1410+ hideLoader ( difference , 'Saved to Imgur and copied to clipboard' , loaderText ) ;
1411+ }
1412+
1413+ break ;
1414+
1415+ default :
1416+ difference = Math . abs ( new Date ( ) - time ) ;
1417+ hideLoader ( difference , 'Unknown error 😱' , loaderText ) ;
1418+ break ;
1419+ }
1420+ }
1421+ } ) ;
1422+
13471423ipc . on ( 'saveDropbox' , ( event ) => {
13481424 isOnline ( ( err , status ) => {
13491425 if ( status !== true ) {
@@ -1358,7 +1434,7 @@ ipc.on('saveDropbox', (event) => {
13581434 setDefaultSceneState ( ) ;
13591435
13601436 if ( dbToken === null || dbToken === undefined ) {
1361- popUp ( popupWindow , popupText , 'Sign in to Dropbox (More > Sign in to Dropbox)' ) ;
1437+ popUp ( popupWindow , popupText , 'Sign in to Dropbox (Sign in to > Dropbox)' ) ;
13621438 return ;
13631439 }
13641440
0 commit comments