{
- if (this.isLoading) return
- this.isOpenLeaveModal = false
- }}
- style=${this.isOpenLeaveModal ? "display: block" : "display: none"}
- >
-
-
${translate("grouppage.gchange35")}
-
-
-
-
-
-
-
- ${translate("grouppage.gchange36")}
-
-
-
${this.message}
-
-
-
- `
- }
-
- firstUpdated() {
- // ...
- }
-
- timeIsoString(timestamp) {
- let myTimestamp = timestamp === undefined ? 1587560082346 : timestamp
- let time = new Date(myTimestamp)
- return time.toISOString()
- }
-
- resetDefaultSettings() {
- this.error = false
- this.message = ''
- this.isLoading = false
- }
-
- renderErr9Text() {
- return html`${translate("grouppage.gchange49")}`
- }
-
- async confirmRelationship(reference) {
- let interval = null
- let stop = false
- const getAnswer = async () => {
-
-
- if (!stop) {
- stop = true
- try {
- let myRef = await parentEpml.request("apiCall", {
- type: "api",
- url: `/transactions/reference/${reference}`
- })
-
- if (myRef && myRef.type) {
- clearInterval(interval)
- this.isLoading = false
- this.isOpenLeaveModal = false
- }
- } catch (error) { }
- stop = false
- }
- }
- interval = setInterval(getAnswer, 5000)
- }
-
- async getLastRef() {
- return await parentEpml.request("apiCall", {
- type: "api",
- url: `/addresses/lastreference/${this.selectedAddress.address}`
- })
- }
-
- getTxnRequestResponse(txnResponse, reference) {
- if (txnResponse === true) {
- this.message = this.renderErr9Text()
- this.error = false
- this.confirmRelationship(reference)
- } else {
- this.error = true
- this.message = ''
- throw new Error(txnResponse)
- }
- }
-
- async convertBytesForSigning(transactionBytesBase58) {
- return await parentEpml.request("apiCall", {
- type: "api",
- method: "POST",
- url: `/transactions/convert`,
- body: `${transactionBytesBase58}`
- })
- }
-
- async signTx(body) {
- return await parentEpml.request("apiCall", {
- type: "api",
- method: "POST",
- url: `/transactions/sign`,
- body: body,
- headers: {
- 'Content-Type': 'application/json'
- }
- })
- }
-
- async process(body) {
- return await parentEpml.request("apiCall", {
- type: "api",
- method: "POST",
- url: `/transactions/process`,
- body: body
- })
- }
-
- async _addAdmin(groupId) {
- // Reset Default Settings...
- this.resetDefaultSettings()
-
- const leaveFeeInput = this.leaveFee
-
- this.isLoading = true
-
- // Get Last Ref
- const validateReceiver = async () => {
- let lastRef = await this.getLastRef()
- let myTransaction = await makeTransactionRequest(lastRef)
- this.getTxnRequestResponse(myTransaction, lastRef)
- }
-
- // Make Transaction Request
- const makeTransactionRequest = async (lastRef) => {
- const body = {
- timestamp: Date.now(),
- reference: lastRef,
- fee: leaveFeeInput,
- ownerPublicKey: window.parent.Base58.encode(window.parent.reduxStore.getState().app.selectedAddress.keyPair.publicKey),
- groupId: groupId,
- member: this.selectedHead.address
- }
-
- const bodyToString = JSON.stringify(body)
-
- let transactionBytes = await parentEpml.request("apiCall", {
- type: "api",
- method: "POST",
- url: `/groups/addadmin`,
- body: bodyToString,
- headers: {
- "Content-Type": "application/json"
- }
- })
-
- const readforsign = await this.convertBytesForSigning(transactionBytes)
-
- const body2 = {
- privateKey: window.parent.Base58.encode(window.parent.reduxStore.getState().app.selectedAddress.keyPair.privateKey),
- transactionBytes: readforsign
- }
-
- const bodyToString2 = JSON.stringify(body2)
-
- let signTransaction = await this.signTx(bodyToString2)
-
- return await this.process(signTransaction)
- }
-
- await validateReceiver()
- }
-
- async _removeAdmin(groupId) {
- // Reset Default Settings...
- this.resetDefaultSettings()
-
- const leaveFeeInput = this.leaveFee
-
- this.isLoading = true
-
- // Get Last Ref
- const validateReceiver = async () => {
- let lastRef = await this.getLastRef()
- let myTransaction = await makeTransactionRequest(lastRef)
- this.getTxnRequestResponse(myTransaction, lastRef)
- }
-
- // Make Transaction Request
- const makeTransactionRequest = async (lastRef) => {
- const body = {
- timestamp: Date.now(),
- reference: lastRef,
- fee: leaveFeeInput,
- ownerPublicKey: window.parent.Base58.encode(window.parent.reduxStore.getState().app.selectedAddress.keyPair.publicKey),
- groupId: groupId,
- admin: this.selectedHead.address
- }
-
- const bodyToString = JSON.stringify(body)
-
- let transactionBytes = await parentEpml.request("apiCall", {
- type: "api",
- method: "POST",
- url: `/groups/removeadmin`,
- body: bodyToString,
- headers: {
- "Content-Type": "application/json"
- }
- })
-
- const readforsign = await this.convertBytesForSigning(
- transactionBytes
- )
-
- const body2 = {
- privateKey: window.parent.Base58.encode(window.parent.reduxStore.getState().app.selectedAddress.keyPair.privateKey),
- transactionBytes: readforsign
- }
-
- const bodyToString2 = JSON.stringify(body2)
-
- let signTransaction = await this.signTx(bodyToString2)
-
- return await this.process(signTransaction)
- }
-
- await validateReceiver()
- }
-
- // Standard functions
- getApiKey() {
- const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node]
- return myNode.apiKey
- }
-
- isEmptyArray(arr) {
- if (!arr) { return true }
- return arr.length === 0
- }
-
- round(number) {
- return (Math.round(parseFloat(number) * 1e8) / 1e8).toFixed(8)
- }
-}
-
-window.customElements.define('chat-group-invites', ChatGroupInvites)