Files
AITBC System b033923756 chore: normalize file permissions across repository
- Remove executable permissions from configuration files (.editorconfig, .env.example, .gitignore)
- Remove executable permissions from documentation files (README.md, LICENSE, SECURITY.md)
- Remove executable permissions from web assets (HTML, CSS, JS files)
- Remove executable permissions from data files (JSON, SQL, YAML, requirements.txt)
- Remove executable permissions from source code files across all apps
- Add executable permissions to Python
2026-03-08 11:26:18 +01:00

107 lines
3.9 KiB
JavaScript

// Injected script that provides the AITBC wallet API to the dApp
(function() {
// Create the wallet API object
const aitbcWallet = {
// Check if wallet is available
isAvailable: function() {
return true;
},
// Connect to wallet
connect: async function() {
return new Promise((resolve, reject) => {
const requestId = Date.now().toString();
// Send request to content script
window.postMessage({
type: 'AITBC_WALLET_REQUEST',
id: requestId,
method: 'connect'
}, '*');
// Listen for response
const messageHandler = function(event) {
if (event.data.type === 'AITBC_WALLET_RESPONSE' && event.data.id === requestId) {
window.removeEventListener('message', messageHandler);
if (event.data.response.error) {
reject(new Error(event.data.response.error));
} else {
resolve(event.data.response);
}
}
};
window.addEventListener('message', messageHandler);
// Timeout after 30 seconds
setTimeout(() => {
window.removeEventListener('message', messageHandler);
reject(new Error('Connection timeout'));
}, 30000);
});
},
// Get account address
getAccount: async function() {
const accounts = await this.request({ method: 'accounts' });
return accounts[0];
},
// Get balance
getBalance: async function(address) {
return this.request({ method: 'getBalance', params: { address } });
},
// Send transaction
sendTransaction: async function(to, amount, data = null) {
return this.request({
method: 'sendTransaction',
params: { to, amount, data }
});
},
// Sign message
signMessage: async function(message) {
return this.request({ method: 'signMessage', params: { message } });
},
// Generic request method
request: async function(payload) {
return new Promise((resolve, reject) => {
const requestId = Date.now().toString();
window.postMessage({
type: 'AITBC_WALLET_REQUEST',
id: requestId,
method: payload.method,
params: payload.params || {}
}, '*');
const messageHandler = function(event) {
if (event.data.type === 'AITBC_WALLET_RESPONSE' && event.data.id === requestId) {
window.removeEventListener('message', messageHandler);
if (event.data.response.error) {
reject(new Error(event.data.response.error));
} else {
resolve(event.data.response);
}
}
};
window.addEventListener('message', messageHandler);
setTimeout(() => {
window.removeEventListener('message', messageHandler);
reject(new Error('Request timeout'));
}, 30000);
});
}
};
// Inject the wallet API into the window object
window.aitbcWallet = aitbcWallet;
// Fire an event to notify the dApp that the wallet is ready
window.dispatchEvent(new Event('aitbcWalletReady'));
})();