mirror of
https://github.com/Qortal/chrome-extension.git
synced 2025-02-11 17:55:49 +00:00
added deploy at qortalrequest
This commit is contained in:
parent
12013947af
commit
82fba43838
@ -774,7 +774,7 @@ async function storeFilesInIndexedDB(obj) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
const UIQortalRequests = ['GET_USER_ACCOUNT', 'DECRYPT_DATA', 'SEND_COIN', 'GET_LIST_ITEMS', 'ADD_LIST_ITEMS', 'DELETE_LIST_ITEM', 'VOTE_ON_POLL', 'CREATE_POLL', 'SEND_CHAT_MESSAGE', 'JOIN_GROUP']
|
const UIQortalRequests = ['GET_USER_ACCOUNT', 'DECRYPT_DATA', 'SEND_COIN', 'GET_LIST_ITEMS', 'ADD_LIST_ITEMS', 'DELETE_LIST_ITEM', 'VOTE_ON_POLL', 'CREATE_POLL', 'SEND_CHAT_MESSAGE', 'JOIN_GROUP', 'DEPLOY_AT']
|
||||||
|
|
||||||
if (!window.hasAddedQortalListener) {
|
if (!window.hasAddedQortalListener) {
|
||||||
console.log("Listener added");
|
console.log("Listener added");
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { addListItems, createPoll, decryptData, deleteListItems, encryptData, getListItems, getUserAccount, joinGroup, publishMultipleQDNResources, publishQDNResource, saveFile, sendChatMessage, sendCoin, voteOnPoll } from "./qortalRequests/get";
|
import { addListItems, createPoll, decryptData, deleteListItems, deployAt, encryptData, getListItems, getUserAccount, joinGroup, publishMultipleQDNResources, publishQDNResource, saveFile, sendChatMessage, sendCoin, voteOnPoll } from "./qortalRequests/get";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -231,6 +231,19 @@ chrome?.runtime?.onMessage.addListener((request, sender, sendResponse) => {
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case "DEPLOY_AT": {
|
||||||
|
const data = request.payload;
|
||||||
|
|
||||||
|
deployAt(data, sender)
|
||||||
|
.then((res) => {
|
||||||
|
sendResponse(res);
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
sendResponse({ error: error.message });
|
||||||
|
});
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
case "SEND_COIN": {
|
case "SEND_COIN": {
|
||||||
const data = request.payload;
|
const data = request.payload;
|
||||||
const requiredFields = ["coin", "destinationAddress", "amount"];
|
const requiredFields = ["coin", "destinationAddress", "amount"];
|
||||||
|
@ -70,6 +70,57 @@ const _createPoll = async (pollName, pollDescription, options) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const _deployAt= async(name, description, tags, creationBytes, amount, assetId, atType)=> {
|
||||||
|
const fee = await getFee("DEPLOY_AT");
|
||||||
|
|
||||||
|
const resPermission = await getUserPermission({
|
||||||
|
text1: "Would you like to deploy this AT?",
|
||||||
|
text2: `Name: ${name}`,
|
||||||
|
text3: `Description: ${description}`,
|
||||||
|
fee: fee.fee,
|
||||||
|
});
|
||||||
|
|
||||||
|
const { accepted } = resPermission;
|
||||||
|
|
||||||
|
if (accepted) {
|
||||||
|
const wallet = await getSaveWallet();
|
||||||
|
const address = wallet.address0;
|
||||||
|
const lastReference = await getLastRef();
|
||||||
|
const resKeyPair = await getKeyPair();
|
||||||
|
const parsedData = JSON.parse(resKeyPair);
|
||||||
|
const uint8PrivateKey = Base58.decode(parsedData.privateKey);
|
||||||
|
const uint8PublicKey = Base58.decode(parsedData.publicKey);
|
||||||
|
const keyPair = {
|
||||||
|
privateKey: uint8PrivateKey,
|
||||||
|
publicKey: uint8PublicKey,
|
||||||
|
};
|
||||||
|
|
||||||
|
const tx = await createTransaction(16, keyPair, {
|
||||||
|
fee: fee.fee,
|
||||||
|
rName: name,
|
||||||
|
rDescription: description,
|
||||||
|
rTags: tags,
|
||||||
|
rAmount: amount,
|
||||||
|
rAssetId: assetId,
|
||||||
|
rCreationBytes: creationBytes,
|
||||||
|
atType: atType,
|
||||||
|
lastReference: lastReference,
|
||||||
|
});
|
||||||
|
|
||||||
|
const signedBytes = Base58.encode(tx.signedBytes);
|
||||||
|
|
||||||
|
const res = await processTransactionVersion2(signedBytes);
|
||||||
|
if (!res?.signature)
|
||||||
|
throw new Error(res?.message || "Transaction was not able to be processed");
|
||||||
|
return res;
|
||||||
|
} else {
|
||||||
|
throw new Error("User declined transaction");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
const _voteOnPoll = async (pollName, optionIndex, optionName) => {
|
const _voteOnPoll = async (pollName, optionIndex, optionName) => {
|
||||||
const fee = await getFee("VOTE_ON_POLL");
|
const fee = await getFee("VOTE_ON_POLL");
|
||||||
|
|
||||||
@ -484,7 +535,7 @@ export const deleteListItems = async (data) => {
|
|||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
} else {
|
} else {
|
||||||
throw new Error("User declined add to list");
|
throw new Error("User declined delete from list");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1065,7 +1116,7 @@ export const sendChatMessage = async (data) => {
|
|||||||
throw new Error("Please enter a recipient or groupId");
|
throw new Error("Please enter a recipient or groupId");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
throw new Error("User declined add to list");
|
throw new Error("User declined to send message");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1118,7 +1169,7 @@ export const joinGroup = async (data) => {
|
|||||||
throw new Error(error?.message || 'Failed to join the group.')
|
throw new Error(error?.message || 'Failed to join the group.')
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
throw new Error("User declined add to list");
|
throw new Error("User declined to join group");
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
@ -1175,7 +1226,7 @@ export const joinGroup = async (data) => {
|
|||||||
} ,sender)
|
} ,sender)
|
||||||
return true
|
return true
|
||||||
} else {
|
} else {
|
||||||
throw new Error("User declined add to list");
|
throw new Error("User declined to save file");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1186,6 +1237,27 @@ export const joinGroup = async (data) => {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const deployAt = async (data)=> {
|
||||||
|
const requiredFields = ['name', 'description', 'tags', 'creationBytes', 'amount', 'assetId', 'type']
|
||||||
|
const missingFields: string[] = []
|
||||||
|
requiredFields.forEach((field) => {
|
||||||
|
if (!data[field] && data[field] !== 0) {
|
||||||
|
missingFields.push(field)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if (missingFields.length > 0) {
|
||||||
|
const missingFieldsString = missingFields.join(', ')
|
||||||
|
const errorMsg = `Missing fields: ${missingFieldsString}`
|
||||||
|
throw new Error(errorMsg)
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const resDeployAt = await _deployAt(data.name, data.description, data.tags, data.creationBytes, data.amount, data.assetId, data.type)
|
||||||
|
return resDeployAt
|
||||||
|
} catch (error) {
|
||||||
|
throw new Error(error?.message || 'Failed to join the group.')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export const sendCoin = async () => {
|
export const sendCoin = async () => {
|
||||||
try {
|
try {
|
||||||
const wallet = await getSaveWallet();
|
const wallet = await getSaveWallet();
|
||||||
|
78
src/transactions/DeployAtTransaction.ts
Normal file
78
src/transactions/DeployAtTransaction.ts
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
// @ts-nocheck
|
||||||
|
|
||||||
|
|
||||||
|
import TransactionBase from './TransactionBase'
|
||||||
|
import { QORT_DECIMALS } from '../constants/constants'
|
||||||
|
|
||||||
|
export default class DeployAtTransaction extends TransactionBase {
|
||||||
|
constructor() {
|
||||||
|
super()
|
||||||
|
this.type = 16
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
set fee(fee) {
|
||||||
|
this._fee = fee * QORT_DECIMALS
|
||||||
|
this._feeBytes = this.constructor.utils.int64ToBytes(this._fee)
|
||||||
|
}
|
||||||
|
|
||||||
|
set rAmount(rAmount) {
|
||||||
|
this._rAmount = Math.round(rAmount * QORT_DECIMALS)
|
||||||
|
this._rAmountBytes = this.constructor.utils.int64ToBytes(this._rAmount)
|
||||||
|
}
|
||||||
|
|
||||||
|
set rName(rName) {
|
||||||
|
this._rName = rName
|
||||||
|
this._rNameBytes = this.constructor.utils.stringtoUTF8Array(this._rName.toLocaleLowerCase())
|
||||||
|
this._rNameLength = this.constructor.utils.int32ToBytes(this._rNameBytes.length)
|
||||||
|
}
|
||||||
|
|
||||||
|
set rDescription(rDescription) {
|
||||||
|
this._rDescription = rDescription
|
||||||
|
this._rDescriptionBytes = this.constructor.utils.stringtoUTF8Array(this._rDescription.toLocaleLowerCase())
|
||||||
|
this._rDescriptionLength = this.constructor.utils.int32ToBytes(this._rDescriptionBytes.length)
|
||||||
|
}
|
||||||
|
|
||||||
|
set atType(atType) {
|
||||||
|
this._atType = atType
|
||||||
|
this._atTypeBytes = this.constructor.utils.stringtoUTF8Array(this._atType)
|
||||||
|
this._atTypeLength = this.constructor.utils.int32ToBytes(this._atTypeBytes.length)
|
||||||
|
}
|
||||||
|
|
||||||
|
set rTags(rTags) {
|
||||||
|
this._rTags = rTags
|
||||||
|
this._rTagsBytes = this.constructor.utils.stringtoUTF8Array(this._rTags.toLocaleLowerCase())
|
||||||
|
this._rTagsLength = this.constructor.utils.int32ToBytes(this._rTagsBytes.length)
|
||||||
|
}
|
||||||
|
|
||||||
|
set rCreationBytes(rCreationBytes) {
|
||||||
|
const decode = this.constructor.Base58.decode(rCreationBytes)
|
||||||
|
this._rCreationBytes = this.constructor.utils.stringtoUTF8Array(decode)
|
||||||
|
this._rCreationBytesLength = this.constructor.utils.int32ToBytes(this._rCreationBytes.length)
|
||||||
|
}
|
||||||
|
|
||||||
|
set rAssetId(rAssetId) {
|
||||||
|
this._rAssetId = this.constructor.utils.int64ToBytes(rAssetId)
|
||||||
|
}
|
||||||
|
|
||||||
|
get params() {
|
||||||
|
const params = super.params
|
||||||
|
params.push(
|
||||||
|
this._rNameLength,
|
||||||
|
this._rNameBytes,
|
||||||
|
this._rDescriptionLength,
|
||||||
|
this._rDescriptionBytes,
|
||||||
|
this._atTypeLength,
|
||||||
|
this._atTypeBytes,
|
||||||
|
this._rTagsLength,
|
||||||
|
this._rTagsBytes,
|
||||||
|
this._rCreationBytesLength,
|
||||||
|
this._rCreationBytes,
|
||||||
|
this._rAmountBytes,
|
||||||
|
this._rAssetId,
|
||||||
|
this._feeBytes
|
||||||
|
)
|
||||||
|
return params
|
||||||
|
}
|
||||||
|
}
|
@ -16,6 +16,7 @@ import RemoveGroupAdminTransaction from './RemoveGroupAdminTransaction.js'
|
|||||||
import RegisterNameTransaction from './RegisterNameTransaction.js'
|
import RegisterNameTransaction from './RegisterNameTransaction.js'
|
||||||
import VoteOnPollTransaction from './VoteOnPollTransaction.js'
|
import VoteOnPollTransaction from './VoteOnPollTransaction.js'
|
||||||
import CreatePollTransaction from './CreatePollTransaction.js'
|
import CreatePollTransaction from './CreatePollTransaction.js'
|
||||||
|
import DeployAtTransaction from './DeployAtTransaction.js'
|
||||||
|
|
||||||
|
|
||||||
export const transactionTypes = {
|
export const transactionTypes = {
|
||||||
@ -23,6 +24,7 @@ export const transactionTypes = {
|
|||||||
2: PaymentTransaction,
|
2: PaymentTransaction,
|
||||||
8: CreatePollTransaction,
|
8: CreatePollTransaction,
|
||||||
9: VoteOnPollTransaction,
|
9: VoteOnPollTransaction,
|
||||||
|
16: DeployAtTransaction,
|
||||||
18: ChatTransaction,
|
18: ChatTransaction,
|
||||||
181: GroupChatTransaction,
|
181: GroupChatTransaction,
|
||||||
22: CreateGroupTransaction,
|
22: CreateGroupTransaction,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user