Advertisement
Guest User

Untitled

a guest
Oct 12th, 2017
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     getTargetFilePath(fileName,noPrompt) {
  2.         var self = this;
  3.         return new Promise((resolve, reject) => {
  4.             var file = new File(new Array(),fileName);
  5.             browser.downloads.download({
  6.                 url: URL.createObjectURL(file),        
  7.                 conflictAction: "uniquify",
  8.                 filename: fileName,
  9.                 saveAs: !noPrompt,
  10.             })
  11.             .then((downloadId)=>{
  12.                 var listenerInstalled = false;
  13.                 var resolved = false;
  14.  
  15.                 function RemoveListener() {
  16.                     if(listenerInstalled) {
  17.                         browser.downloads.onChanged.removeListener(Listener);      
  18.                         listenerInstalled = false;
  19.                     }
  20.                 }
  21.  
  22.                 function Resolve(filePath) {
  23.                     if(!resolved) {
  24.                         resolved = true;
  25.                         if(filePath)
  26.                             self.hit.targetDirectory =
  27.                                 /^(.*?)[^\\\/]*$/.exec(filePath)[1];
  28.                         resolve(filePath);
  29.                     }
  30.                 }
  31.  
  32.                 function Listener(details) {
  33.                     if(details.id==downloadId) {
  34.                         if(details.error) {
  35.                             // Chrome specifies error on user cancel
  36.                             RemoveListener();
  37.                             Resolve(null);
  38.                         } else if(details.filename && details.filename.current) {
  39.                             RemoveListener();
  40.                             Resolve(details.filename.current);
  41.                         }
  42.                     }
  43.                 }
  44.  
  45.                 browser.downloads.search({
  46.                     id: downloadId
  47.                 })
  48.                 .then((downloadItems)=>{
  49.                     // Firefox resolves the search once use chose file
  50.                     var downloadItem = downloadItems[0];
  51.                     if(downloadItem && downloadItem.filename) {
  52.                         RemoveListener();
  53.                         Resolve(downloadItem.filename);
  54.                     }
  55.                 });
  56.  
  57.                 browser.downloads.onChanged.addListener(Listener);
  58.                 listenerInstalled = true;
  59.             })
  60.             .catch((err)=>{
  61.                 // Firefox generates exception on user cancel
  62.                 resolve(null);
  63.             });
  64.         });
  65.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement