Qortal extension for Google Chrome, and other Chromium-based Browsers. Allows wallet and games, and more in the future!
https://qortal.dev
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
150 lines
5.3 KiB
150 lines
5.3 KiB
async function connection(hostname) { |
|
const isConnected = await chrome.storage.local.get([hostname]); |
|
let connected = false |
|
if(isConnected && Object.keys(isConnected).length > 0 && isConnected[hostname]){ |
|
connected = true |
|
} |
|
return connected |
|
} |
|
|
|
// In your content script |
|
document.addEventListener('qortalExtensionRequests', async (event) => { |
|
const { type, payload, requestId, timeout } = event.detail; // Capture the requestId |
|
|
|
if (type === 'REQUEST_USER_INFO') { |
|
const hostname = window.location.hostname |
|
const res = await connection(hostname) |
|
|
|
if(!res){ |
|
document.dispatchEvent(new CustomEvent('qortalExtensionResponses', { |
|
detail: { type: "USER_INFO", data: { |
|
error: "Not authorized" |
|
}, requestId } |
|
})); |
|
return |
|
} |
|
chrome.runtime.sendMessage({ action: "userInfo" }, (response) => { |
|
if (response.error) { |
|
document.dispatchEvent(new CustomEvent('qortalExtensionResponses', { |
|
detail: { type: "USER_INFO", data: { |
|
error: response.error |
|
}, requestId } |
|
})); |
|
} else { |
|
// Include the requestId in the detail when dispatching the response |
|
document.dispatchEvent(new CustomEvent('qortalExtensionResponses', { |
|
detail: { type: "USER_INFO", data: response, requestId } |
|
})); |
|
} |
|
}); |
|
} else if (type === 'REQUEST_IS_INSTALLED') { |
|
chrome.runtime.sendMessage({ action: "version" }, (response) => { |
|
if (response.error) { |
|
console.error("Error:", response.error); |
|
} else { |
|
// Include the requestId in the detail when dispatching the response |
|
document.dispatchEvent(new CustomEvent('qortalExtensionResponses', { |
|
detail: { type: "IS_INSTALLED", data: response, requestId } |
|
})); |
|
} |
|
}); |
|
} else if (type === 'REQUEST_CONNECTION') { |
|
const hostname = window.location.hostname |
|
chrome.runtime.sendMessage({ action: "connection", payload: { |
|
hostname |
|
}, timeout }, (response) => { |
|
if (response.error) { |
|
console.error("Error:", response.error); |
|
} else { |
|
// Include the requestId in the detail when dispatching the response |
|
document.dispatchEvent(new CustomEvent('qortalExtensionResponses', { |
|
detail: { type: "CONNECTION", data: response, requestId } |
|
})); |
|
} |
|
}); |
|
} else if (type === 'REQUEST_AUTHENTICATION') { |
|
const hostname = window.location.hostname |
|
const res = await connection(hostname) |
|
if(!res){ |
|
document.dispatchEvent(new CustomEvent('qortalExtensionResponses', { |
|
detail: { type: "USER_INFO", data: { |
|
error: "Not authorized" |
|
}, requestId } |
|
})); |
|
return |
|
} |
|
chrome.runtime.sendMessage({ action: "authentication", payload: { |
|
hostname |
|
}, timeout }, (response) => { |
|
if (response.error) { |
|
document.dispatchEvent(new CustomEvent('qortalExtensionResponses', { |
|
detail: { type: "AUTHENTICATION", data: { |
|
error: response.error |
|
}, requestId } |
|
})); |
|
} else { |
|
// Include the requestId in the detail when dispatching the response |
|
document.dispatchEvent(new CustomEvent('qortalExtensionResponses', { |
|
detail: { type: "AUTHENTICATION", data: response, requestId } |
|
})); |
|
} |
|
}); |
|
} else if (type === 'REQUEST_SEND_QORT') { |
|
const hostname = window.location.hostname |
|
const res = await connection(hostname) |
|
if(!res){ |
|
document.dispatchEvent(new CustomEvent('qortalExtensionResponses', { |
|
detail: { type: "USER_INFO", data: { |
|
error: "Not authorized" |
|
}, requestId } |
|
})); |
|
return |
|
} |
|
chrome.runtime.sendMessage({ action: "sendQort", payload: { |
|
hostname, |
|
amount: payload.amount, |
|
description: payload.description, |
|
address: payload.address |
|
}, timeout }, (response) => { |
|
if (response.error) { |
|
document.dispatchEvent(new CustomEvent('qortalExtensionResponses', { |
|
detail: { type: "SEND_QORT", data: { |
|
error: response.error |
|
}, requestId } |
|
})); |
|
} else { |
|
// Include the requestId in the detail when dispatching the response |
|
document.dispatchEvent(new CustomEvent('qortalExtensionResponses', { |
|
detail: { type: "SEND_QORT", data: response, requestId } |
|
})); |
|
} |
|
}); |
|
} else if (type === 'REQUEST_CLOSE_POPUP') { |
|
const hostname = window.location.hostname |
|
const res = await connection(hostname) |
|
if(!res){ |
|
document.dispatchEvent(new CustomEvent('qortalExtensionResponses', { |
|
detail: { type: "USER_INFO", data: { |
|
error: "Not authorized" |
|
}, requestId } |
|
})); |
|
return |
|
} |
|
chrome.runtime.sendMessage({ action: "closePopup" }, (response) => { |
|
if (response.error) { |
|
|
|
document.dispatchEvent(new CustomEvent('qortalExtensionResponses', { |
|
detail: { type: "CLOSE_POPUP", data: { |
|
error: response.error |
|
}, requestId } |
|
})); |
|
} else { |
|
// Include the requestId in the detail when dispatching the response |
|
document.dispatchEvent(new CustomEvent('qortalExtensionResponses', { |
|
detail: { type: "CLOSE_POPUP", data: true, requestId } |
|
})); |
|
} |
|
}); |
|
} |
|
// Handle other request types as needed... |
|
});
|
|
|