mirror of
https://github.com/logos-messaging/OpChan.git
synced 2026-01-05 06:13:11 +00:00
78 lines
2.9 KiB
JavaScript
78 lines
2.9 KiB
JavaScript
import messageManager from '../waku';
|
|
export class MessageService {
|
|
constructor(delegationManager) {
|
|
this.delegationManager = delegationManager;
|
|
}
|
|
/**
|
|
* Sign and send a message to the Waku network
|
|
*/
|
|
async sendMessage(message) {
|
|
try {
|
|
const signedMessage = await this.delegationManager.signMessage(message);
|
|
if (!signedMessage) {
|
|
// Check if delegation exists but is expired
|
|
const delegationStatus = await this.delegationManager.getStatus();
|
|
const isDelegationExpired = !delegationStatus.isValid;
|
|
return {
|
|
success: false,
|
|
error: isDelegationExpired
|
|
? 'Key delegation expired. Please re-delegate your key through the profile menu.'
|
|
: 'Key delegation required. Please delegate a signing key from your profile menu to post without wallet approval for each action.',
|
|
};
|
|
}
|
|
await messageManager.sendMessage(signedMessage);
|
|
return {
|
|
success: true,
|
|
message: signedMessage,
|
|
};
|
|
}
|
|
catch (error) {
|
|
console.error('Error signing and sending message:', error);
|
|
let errorMessage = 'Failed to sign and send message. Please try again.';
|
|
if (error instanceof Error) {
|
|
if (error.message.includes('timeout') ||
|
|
error.message.includes('network')) {
|
|
errorMessage =
|
|
'Network issue detected. Please check your connection and try again.';
|
|
}
|
|
else if (error.message.includes('rejected') ||
|
|
error.message.includes('denied')) {
|
|
errorMessage =
|
|
'Wallet signature request was rejected. Please approve signing to continue.';
|
|
}
|
|
else {
|
|
errorMessage = error.message;
|
|
}
|
|
}
|
|
return {
|
|
success: false,
|
|
error: errorMessage,
|
|
};
|
|
}
|
|
}
|
|
/**
|
|
* Sign and broadcast a message (simplified version for profile updates)
|
|
*/
|
|
async signAndBroadcastMessage(message) {
|
|
try {
|
|
const signedMessage = await this.delegationManager.signMessage(message);
|
|
if (!signedMessage) {
|
|
console.error('Failed to sign message');
|
|
return null;
|
|
}
|
|
await messageManager.sendMessage(signedMessage);
|
|
return signedMessage;
|
|
}
|
|
catch (error) {
|
|
console.error('Error signing and broadcasting message:', error);
|
|
return null;
|
|
}
|
|
}
|
|
/**
|
|
* Verify a message signature
|
|
*/
|
|
async verifyMessage(message) {
|
|
return await this.delegationManager.verify(message);
|
|
}
|
|
}
|
|
//# sourceMappingURL=MessageService.js.map
|