Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- getTargetFilePath(fileName,noPrompt) {
- var self = this;
- return new Promise((resolve, reject) => {
- var file = new File(new Array(),fileName);
- browser.downloads.download({
- url: URL.createObjectURL(file),
- conflictAction: "uniquify",
- filename: fileName,
- saveAs: !noPrompt,
- })
- .then((downloadId)=>{
- var listenerInstalled = false;
- var resolved = false;
- function RemoveListener() {
- if(listenerInstalled) {
- browser.downloads.onChanged.removeListener(Listener);
- listenerInstalled = false;
- }
- }
- function Resolve(filePath) {
- if(!resolved) {
- resolved = true;
- if(filePath)
- self.hit.targetDirectory =
- /^(.*?)[^\\\/]*$/.exec(filePath)[1];
- resolve(filePath);
- }
- }
- function Listener(details) {
- if(details.id==downloadId) {
- if(details.error) {
- // Chrome specifies error on user cancel
- RemoveListener();
- Resolve(null);
- } else if(details.filename && details.filename.current) {
- RemoveListener();
- Resolve(details.filename.current);
- }
- }
- }
- browser.downloads.search({
- id: downloadId
- })
- .then((downloadItems)=>{
- // Firefox resolves the search once use chose file
- var downloadItem = downloadItems[0];
- if(downloadItem && downloadItem.filename) {
- RemoveListener();
- Resolve(downloadItem.filename);
- }
- });
- browser.downloads.onChanged.addListener(Listener);
- listenerInstalled = true;
- })
- .catch((err)=>{
- // Firefox generates exception on user cancel
- resolve(null);
- });
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement