aesirx-analytics 2.2.2 → 2.2.3
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/{Consent-3FMR7JQE.js → Consent-HRGYMPE6.js} +152 -117
- package/dist/analytics.js +353 -2361
- package/dist/index.d.ts +7 -1
- package/dist/index.js +337 -54
- package/package.json +11 -10
@@ -214,9 +214,13 @@ import { useCallback, useContext, useEffect, useState } from "react";
|
|
214
214
|
// src/utils/Concordium.ts
|
215
215
|
import {
|
216
216
|
AccountAddress,
|
217
|
+
ContractAddress,
|
217
218
|
deserializeReceiveReturnValue,
|
219
|
+
ReceiveName,
|
220
|
+
ReturnValue,
|
218
221
|
SchemaVersion,
|
219
|
-
|
222
|
+
ContractName,
|
223
|
+
EntrypointName
|
220
224
|
} from "@concordium/web-sdk";
|
221
225
|
|
222
226
|
// src/utils/config.ts
|
@@ -226,27 +230,31 @@ var NFT_SMARTCONTRACT = {
|
|
226
230
|
name: "aesirx_web3_web3id",
|
227
231
|
schema: "//8DAQAAABIAAABhZXNpcnhfd2ViM193ZWIzaWQACgAAAAkAAABiYWxhbmNlT2YGEAEUAAIAAAAIAAAAdG9rZW5faWQdAAcAAABhZGRyZXNzFQIAAAAHAAAAQWNjb3VudAEBAAAACwgAAABDb250cmFjdAEBAAAADBABGyUAAAAVBAAAAA4AAABJbnZhbGlkVG9rZW5JZAIRAAAASW5zdWZmaWNpZW50RnVuZHMCDAAAAFVuYXV0aG9yaXplZAIGAAAAQ3VzdG9tAQEAAAAVBgAAAAsAAABQYXJzZVBhcmFtcwIHAAAATG9nRnVsbAIMAAAATG9nTWFsZm9ybWVkAhQAAABUb2tlbklkQWxyZWFkeUV4aXN0cwITAAAASW52b2tlQ29udHJhY3RFcnJvcgINAAAASW52YWxpZFdlYjNJZAIUAAAAZ2xvYmFsVXBkYXRlT3BlcmF0b3IEEAEUAAIAAAAGAAAAdXBkYXRlFQIAAAAGAAAAUmVtb3ZlAgMAAABBZGQCCAAAAG9wZXJhdG9yFQIAAAAHAAAAQWNjb3VudAEBAAAACwgAAABDb250cmFjdAEBAAAADBUEAAAADgAAAEludmFsaWRUb2tlbklkAhEAAABJbnN1ZmZpY2llbnRGdW5kcwIMAAAAVW5hdXRob3JpemVkAgYAAABDdXN0b20BAQAAABUGAAAACwAAAFBhcnNlUGFyYW1zAgcAAABMb2dGdWxsAgwAAABMb2dNYWxmb3JtZWQCFAAAAFRva2VuSWRBbHJlYWR5RXhpc3RzAhMAAABJbnZva2VDb250cmFjdEVycm9yAg0AAABJbnZhbGlkV2ViM0lkAgQAAABtaW50BBQAAwAAAAUAAABvd25lcgsFAAAAdG9rZW4dAAYAAAB3ZWIzaWQWAhUEAAAADgAAAEludmFsaWRUb2tlbklkAhEAAABJbnN1ZmZpY2llbnRGdW5kcwIMAAAAVW5hdXRob3JpemVkAgYAAABDdXN0b20BAQAAABUGAAAACwAAAFBhcnNlUGFyYW1zAgcAAABMb2dGdWxsAgwAAABMb2dNYWxmb3JtZWQCFAAAAFRva2VuSWRBbHJlYWR5RXhpc3RzAhMAAABJbnZva2VDb250cmFjdEVycm9yAg0AAABJbnZhbGlkV2ViM0lkAgoAAABvcGVyYXRvck9mBhABFAACAAAABQAAAG93bmVyFQIAAAAHAAAAQWNjb3VudAEBAAAACwgAAABDb250cmFjdAEBAAAADAcAAABhZGRyZXNzFQIAAAAHAAAAQWNjb3VudAEBAAAACwgAAABDb250cmFjdAEBAAAADBABARUEAAAADgAAAEludmFsaWRUb2tlbklkAhEAAABJbnN1ZmZpY2llbnRGdW5kcwIMAAAAVW5hdXRob3JpemVkAgYAAABDdXN0b20BAQAAABUGAAAACwAAAFBhcnNlUGFyYW1zAgcAAABMb2dGdWxsAgwAAABMb2dNYWxmb3JtZWQCFAAAAFRva2VuSWRBbHJlYWR5RXhpc3RzAhMAAABJbnZva2VDb250cmFjdEVycm9yAg0AAABJbnZhbGlkV2ViM0lkAg8AAABzZXRJbXBsZW1lbnRvcnMEFAACAAAAAgAAAGlkFgAMAAAAaW1wbGVtZW50b3JzEAIMFQQAAAAOAAAASW52YWxpZFRva2VuSWQCEQAAAEluc3VmZmljaWVudEZ1bmRzAgwAAABVbmF1dGhvcml6ZWQCBgAAAEN1c3RvbQEBAAAAFQYAAAALAAAAUGFyc2VQYXJhbXMCBwAAAExvZ0Z1bGwCDAAAAExvZ01hbGZvcm1lZAIUAAAAVG9rZW5JZEFscmVhZHlFeGlzdHMCEwAAAEludm9rZUNvbnRyYWN0RXJyb3ICDQAAAEludmFsaWRXZWIzSWQCCAAAAHN1cHBvcnRzBhABFgAQARUDAAAACQAAAE5vU3VwcG9ydAIHAAAAU3VwcG9ydAIJAAAAU3VwcG9ydEJ5AQEAAAAQAAwVBAAAAA4AAABJbnZhbGlkVG9rZW5JZAIRAAAASW5zdWZmaWNpZW50RnVuZHMCDAAAAFVuYXV0aG9yaXplZAIGAAAAQ3VzdG9tAQEAAAAVBgAAAAsAAABQYXJzZVBhcmFtcwIHAAAATG9nRnVsbAIMAAAATG9nTWFsZm9ybWVkAhQAAABUb2tlbklkQWxyZWFkeUV4aXN0cwITAAAASW52b2tlQ29udHJhY3RFcnJvcgINAAAASW52YWxpZFdlYjNJZAINAAAAdG9rZW5NZXRhZGF0YQYQAR0AEAEUAAIAAAADAAAAdXJsFgEEAAAAaGFzaBUCAAAABAAAAE5vbmUCBAAAAFNvbWUBAQAAABMgAAAAAhUEAAAADgAAAEludmFsaWRUb2tlbklkAhEAAABJbnN1ZmZpY2llbnRGdW5kcwIMAAAAVW5hdXRob3JpemVkAgYAAABDdXN0b20BAQAAABUGAAAACwAAAFBhcnNlUGFyYW1zAgcAAABMb2dGdWxsAgwAAABMb2dNYWxmb3JtZWQCFAAAAFRva2VuSWRBbHJlYWR5RXhpc3RzAhMAAABJbnZva2VDb250cmFjdEVycm9yAg0AAABJbnZhbGlkV2ViM0lkAggAAAB0cmFuc2ZlcgQQARQABQAAAAgAAAB0b2tlbl9pZB0ABgAAAGFtb3VudBslAAAABAAAAGZyb20VAgAAAAcAAABBY2NvdW50AQEAAAALCAAAAENvbnRyYWN0AQEAAAAMAgAAAHRvFQIAAAAHAAAAQWNjb3VudAEBAAAACwgAAABDb250cmFjdAECAAAADBYBBAAAAGRhdGEdARUEAAAADgAAAEludmFsaWRUb2tlbklkAhEAAABJbnN1ZmZpY2llbnRGdW5kcwIMAAAAVW5hdXRob3JpemVkAgYAAABDdXN0b20BAQAAABUGAAAACwAAAFBhcnNlUGFyYW1zAgcAAABMb2dGdWxsAgwAAABMb2dNYWxmb3JtZWQCFAAAAFRva2VuSWRBbHJlYWR5RXhpc3RzAhMAAABJbnZva2VDb250cmFjdEVycm9yAg0AAABJbnZhbGlkV2ViM0lkAg4AAAB1cGRhdGVPcGVyYXRvcgQQARQAAgAAAAYAAAB1cGRhdGUVAgAAAAYAAABSZW1vdmUCAwAAAEFkZAIIAAAAb3BlcmF0b3IVAgAAAAcAAABBY2NvdW50AQEAAAALCAAAAENvbnRyYWN0AQEAAAAMFQQAAAAOAAAASW52YWxpZFRva2VuSWQCEQAAAEluc3VmZmljaWVudEZ1bmRzAgwAAABVbmF1dGhvcml6ZWQCBgAAAEN1c3RvbQEBAAAAFQYAAAALAAAAUGFyc2VQYXJhbXMCBwAAAExvZ0Z1bGwCDAAAAExvZ01hbGZvcm1lZAIUAAAAVG9rZW5JZEFscmVhZHlFeGlzdHMCEwAAAEludm9rZUNvbnRyYWN0RXJyb3ICDQAAAEludmFsaWRXZWIzSWQCBAAAAHZpZXcBFAADAAAABQAAAHN0YXRlEAIPFQIAAAAHAAAAQWNjb3VudAEBAAAACwgAAABDb250cmFjdAEBAAAADBQAAgAAAAwAAABvd25lZF90b2tlbnMQAh0ACQAAAG9wZXJhdG9ycxACFQIAAAAHAAAAQWNjb3VudAEBAAAACwgAAABDb250cmFjdAEBAAAADAoAAABhbGxfdG9rZW5zEAIdAAkAAABvcGVyYXRvcnMQAhUCAAAABwAAAEFjY291bnQBAQAAAAsIAAAAQ29udHJhY3QBAQAAAAwBHwUAAAD7DQAAAFRva2VuTWV0YWRhdGEAAgAAAAgAAAB0b2tlbl9pZB0ADAAAAG1ldGFkYXRhX3VybBQAAgAAAAMAAAB1cmwWAQQAAABoYXNoFQIAAAAEAAAATm9uZQIEAAAAU29tZQEBAAAAEyAAAAAC/A4AAABVcGRhdGVPcGVyYXRvcgADAAAABgAAAHVwZGF0ZRUCAAAABgAAAFJlbW92ZQIDAAAAQWRkAgUAAABvd25lchUCAAAABwAAAEFjY291bnQBAQAAAAsIAAAAQ29udHJhY3QBAQAAAAwIAAAAb3BlcmF0b3IVAgAAAAcAAABBY2NvdW50AQEAAAALCAAAAENvbnRyYWN0AQEAAAAM/QQAAABCdXJuAAMAAAAIAAAAdG9rZW5faWQdAAYAAABhbW91bnQbJQAAAAUAAABvd25lchUCAAAABwAAAEFjY291bnQBAQAAAAsIAAAAQ29udHJhY3QBAQAAAAz+BAAAAE1pbnQAAwAAAAgAAAB0b2tlbl9pZB0ABgAAAGFtb3VudBslAAAABQAAAG93bmVyFQIAAAAHAAAAQWNjb3VudAEBAAAACwgAAABDb250cmFjdAEBAAAADP8IAAAAVHJhbnNmZXIABAAAAAgAAAB0b2tlbl9pZB0ABgAAAGFtb3VudBslAAAABAAAAGZyb20VAgAAAAcAAABBY2NvdW50AQEAAAALCAAAAENvbnRyYWN0AQEAAAAMAgAAAHRvFQIAAAAHAAAAQWNjb3VudAEBAAAACwgAAABDb250cmFjdAEBAAAADA"
|
228
232
|
};
|
229
|
-
var
|
230
|
-
index:
|
233
|
+
var NFT_SMARTCONTRACT_TESTNET = {
|
234
|
+
index: 6740,
|
231
235
|
subIndex: 0,
|
232
|
-
name: "
|
233
|
-
schema: "//
|
236
|
+
name: "aesirx_web3_web3id_testnet_v1_2_1",
|
237
|
+
schema: "//8DAQAAACEAAABhZXNpcnhfd2ViM193ZWIzaWRfdGVzdG5ldF92MV8yXzEACgAAAAkAAABiYWxhbmNlT2YGEAEUAAIAAAAIAAAAdG9rZW5faWQdAAcAAABhZGRyZXNzFQIAAAAHAAAAQWNjb3VudAEBAAAACwgAAABDb250cmFjdAEBAAAADBABGyUAAAAVBAAAAA4AAABJbnZhbGlkVG9rZW5JZAIRAAAASW5zdWZmaWNpZW50RnVuZHMCDAAAAFVuYXV0aG9yaXplZAIGAAAAQ3VzdG9tAQEAAAAVBgAAAAsAAABQYXJzZVBhcmFtcwIHAAAATG9nRnVsbAIMAAAATG9nTWFsZm9ybWVkAhQAAABUb2tlbklkQWxyZWFkeUV4aXN0cwITAAAASW52b2tlQ29udHJhY3RFcnJvcgINAAAASW52YWxpZFdlYjNJZAIUAAAAZ2xvYmFsVXBkYXRlT3BlcmF0b3IEEAEUAAIAAAAGAAAAdXBkYXRlFQIAAAAGAAAAUmVtb3ZlAgMAAABBZGQCCAAAAG9wZXJhdG9yFQIAAAAHAAAAQWNjb3VudAEBAAAACwgAAABDb250cmFjdAEBAAAADBUEAAAADgAAAEludmFsaWRUb2tlbklkAhEAAABJbnN1ZmZpY2llbnRGdW5kcwIMAAAAVW5hdXRob3JpemVkAgYAAABDdXN0b20BAQAAABUGAAAACwAAAFBhcnNlUGFyYW1zAgcAAABMb2dGdWxsAgwAAABMb2dNYWxmb3JtZWQCFAAAAFRva2VuSWRBbHJlYWR5RXhpc3RzAhMAAABJbnZva2VDb250cmFjdEVycm9yAg0AAABJbnZhbGlkV2ViM0lkAgQAAABtaW50BBQAAwAAAAUAAABvd25lcgsFAAAAdG9rZW4dAAYAAAB3ZWIzaWQWAhUEAAAADgAAAEludmFsaWRUb2tlbklkAhEAAABJbnN1ZmZpY2llbnRGdW5kcwIMAAAAVW5hdXRob3JpemVkAgYAAABDdXN0b20BAQAAABUGAAAACwAAAFBhcnNlUGFyYW1zAgcAAABMb2dGdWxsAgwAAABMb2dNYWxmb3JtZWQCFAAAAFRva2VuSWRBbHJlYWR5RXhpc3RzAhMAAABJbnZva2VDb250cmFjdEVycm9yAg0AAABJbnZhbGlkV2ViM0lkAgoAAABvcGVyYXRvck9mBhABFAACAAAABQAAAG93bmVyFQIAAAAHAAAAQWNjb3VudAEBAAAACwgAAABDb250cmFjdAEBAAAADAcAAABhZGRyZXNzFQIAAAAHAAAAQWNjb3VudAEBAAAACwgAAABDb250cmFjdAEBAAAADBABARUEAAAADgAAAEludmFsaWRUb2tlbklkAhEAAABJbnN1ZmZpY2llbnRGdW5kcwIMAAAAVW5hdXRob3JpemVkAgYAAABDdXN0b20BAQAAABUGAAAACwAAAFBhcnNlUGFyYW1zAgcAAABMb2dGdWxsAgwAAABMb2dNYWxmb3JtZWQCFAAAAFRva2VuSWRBbHJlYWR5RXhpc3RzAhMAAABJbnZva2VDb250cmFjdEVycm9yAg0AAABJbnZhbGlkV2ViM0lkAg8AAABzZXRJbXBsZW1lbnRvcnMEFAACAAAAAgAAAGlkFgAMAAAAaW1wbGVtZW50b3JzEAIMFQQAAAAOAAAASW52YWxpZFRva2VuSWQCEQAAAEluc3VmZmljaWVudEZ1bmRzAgwAAABVbmF1dGhvcml6ZWQCBgAAAEN1c3RvbQEBAAAAFQYAAAALAAAAUGFyc2VQYXJhbXMCBwAAAExvZ0Z1bGwCDAAAAExvZ01hbGZvcm1lZAIUAAAAVG9rZW5JZEFscmVhZHlFeGlzdHMCEwAAAEludm9rZUNvbnRyYWN0RXJyb3ICDQAAAEludmFsaWRXZWIzSWQCCAAAAHN1cHBvcnRzBhABFgAQARUDAAAACQAAAE5vU3VwcG9ydAIHAAAAU3VwcG9ydAIJAAAAU3VwcG9ydEJ5AQEAAAAQAAwVBAAAAA4AAABJbnZhbGlkVG9rZW5JZAIRAAAASW5zdWZmaWNpZW50RnVuZHMCDAAAAFVuYXV0aG9yaXplZAIGAAAAQ3VzdG9tAQEAAAAVBgAAAAsAAABQYXJzZVBhcmFtcwIHAAAATG9nRnVsbAIMAAAATG9nTWFsZm9ybWVkAhQAAABUb2tlbklkQWxyZWFkeUV4aXN0cwITAAAASW52b2tlQ29udHJhY3RFcnJvcgINAAAASW52YWxpZFdlYjNJZAINAAAAdG9rZW5NZXRhZGF0YQYQAR0AEAEUAAIAAAADAAAAdXJsFgEEAAAAaGFzaBUCAAAABAAAAE5vbmUCBAAAAFNvbWUBAQAAABMgAAAAAhUEAAAADgAAAEludmFsaWRUb2tlbklkAhEAAABJbnN1ZmZpY2llbnRGdW5kcwIMAAAAVW5hdXRob3JpemVkAgYAAABDdXN0b20BAQAAABUGAAAACwAAAFBhcnNlUGFyYW1zAgcAAABMb2dGdWxsAgwAAABMb2dNYWxmb3JtZWQCFAAAAFRva2VuSWRBbHJlYWR5RXhpc3RzAhMAAABJbnZva2VDb250cmFjdEVycm9yAg0AAABJbnZhbGlkV2ViM0lkAggAAAB0cmFuc2ZlcgQQARQABQAAAAgAAAB0b2tlbl9pZB0ABgAAAGFtb3VudBslAAAABAAAAGZyb20VAgAAAAcAAABBY2NvdW50AQEAAAALCAAAAENvbnRyYWN0AQEAAAAMAgAAAHRvFQIAAAAHAAAAQWNjb3VudAEBAAAACwgAAABDb250cmFjdAECAAAADBYBBAAAAGRhdGEdARUEAAAADgAAAEludmFsaWRUb2tlbklkAhEAAABJbnN1ZmZpY2llbnRGdW5kcwIMAAAAVW5hdXRob3JpemVkAgYAAABDdXN0b20BAQAAABUGAAAACwAAAFBhcnNlUGFyYW1zAgcAAABMb2dGdWxsAgwAAABMb2dNYWxmb3JtZWQCFAAAAFRva2VuSWRBbHJlYWR5RXhpc3RzAhMAAABJbnZva2VDb250cmFjdEVycm9yAg0AAABJbnZhbGlkV2ViM0lkAg4AAAB1cGRhdGVPcGVyYXRvcgQQARQAAgAAAAYAAAB1cGRhdGUVAgAAAAYAAABSZW1vdmUCAwAAAEFkZAIIAAAAb3BlcmF0b3IVAgAAAAcAAABBY2NvdW50AQEAAAALCAAAAENvbnRyYWN0AQEAAAAMFQQAAAAOAAAASW52YWxpZFRva2VuSWQCEQAAAEluc3VmZmljaWVudEZ1bmRzAgwAAABVbmF1dGhvcml6ZWQCBgAAAEN1c3RvbQEBAAAAFQYAAAALAAAAUGFyc2VQYXJhbXMCBwAAAExvZ0Z1bGwCDAAAAExvZ01hbGZvcm1lZAIUAAAAVG9rZW5JZEFscmVhZHlFeGlzdHMCEwAAAEludm9rZUNvbnRyYWN0RXJyb3ICDQAAAEludmFsaWRXZWIzSWQCBAAAAHZpZXcBFAADAAAABQAAAHN0YXRlEAIPFQIAAAAHAAAAQWNjb3VudAEBAAAACwgAAABDb250cmFjdAEBAAAADBQAAgAAAAwAAABvd25lZF90b2tlbnMQAh0ACQAAAG9wZXJhdG9ycxACFQIAAAAHAAAAQWNjb3VudAEBAAAACwgAAABDb250cmFjdAEBAAAADAoAAABhbGxfdG9rZW5zEAIdAAkAAABvcGVyYXRvcnMQAhUCAAAABwAAAEFjY291bnQBAQAAAAsIAAAAQ29udHJhY3QBAQAAAAwBHwUAAAD7DQAAAFRva2VuTWV0YWRhdGEAAgAAAAgAAAB0b2tlbl9pZB0ADAAAAG1ldGFkYXRhX3VybBQAAgAAAAMAAAB1cmwWAQQAAABoYXNoFQIAAAAEAAAATm9uZQIEAAAAU29tZQEBAAAAEyAAAAAC/A4AAABVcGRhdGVPcGVyYXRvcgADAAAABgAAAHVwZGF0ZRUCAAAABgAAAFJlbW92ZQIDAAAAQWRkAgUAAABvd25lchUCAAAABwAAAEFjY291bnQBAQAAAAsIAAAAQ29udHJhY3QBAQAAAAwIAAAAb3BlcmF0b3IVAgAAAAcAAABBY2NvdW50AQEAAAALCAAAAENvbnRyYWN0AQEAAAAM/QQAAABCdXJuAAMAAAAIAAAAdG9rZW5faWQdAAYAAABhbW91bnQbJQAAAAUAAABvd25lchUCAAAABwAAAEFjY291bnQBAQAAAAsIAAAAQ29udHJhY3QBAQAAAAz+BAAAAE1pbnQAAwAAAAgAAAB0b2tlbl9pZB0ABgAAAGFtb3VudBslAAAABQAAAG93bmVyFQIAAAAHAAAAQWNjb3VudAEBAAAACwgAAABDb250cmFjdAEBAAAADP8IAAAAVHJhbnNmZXIABAAAAAgAAAB0b2tlbl9pZB0ABgAAAGFtb3VudBslAAAABAAAAGZyb20VAgAAAAcAAABBY2NvdW50AQEAAAALCAAAAENvbnRyYWN0AQEAAAAMAgAAAHRvFQIAAAAHAAAAQWNjb3VudAEBAAAACwgAAABDb250cmFjdAEBAAAADA=="
|
234
238
|
};
|
235
239
|
|
236
240
|
// src/utils/Concordium.ts
|
237
|
-
var invokeSmartContract = async (
|
241
|
+
var invokeSmartContract = async (account, name, index, subIndex, schema, method, rpcClient) => {
|
238
242
|
try {
|
239
|
-
const
|
240
|
-
|
241
|
-
|
242
|
-
contract:
|
243
|
-
method: `${name}.${method}`
|
243
|
+
const res = await rpcClient.invokeContract({
|
244
|
+
invoker: AccountAddress.fromBase58(account),
|
245
|
+
method: ReceiveName.fromString(`${name}.${method}`),
|
246
|
+
contract: ContractAddress.create(index, subIndex)
|
244
247
|
});
|
248
|
+
if (!res || res.tag === "failure" || !res.returnValue) {
|
249
|
+
throw new Error(
|
250
|
+
`RPC call 'invokeContract' on method '${name}.view' of contract '${method}' failed`
|
251
|
+
);
|
252
|
+
}
|
245
253
|
const returnValue = await deserializeReceiveReturnValue(
|
246
|
-
toBuffer(
|
247
|
-
|
248
|
-
name,
|
249
|
-
method,
|
254
|
+
ReturnValue.toBuffer(res.returnValue),
|
255
|
+
Buffer.from(schema, "base64"),
|
256
|
+
ContractName.fromString(name),
|
257
|
+
EntrypointName.fromString(method),
|
250
258
|
SchemaVersion.V2
|
251
259
|
);
|
252
260
|
console.log("invokeSmartContract", returnValue);
|
@@ -256,40 +264,28 @@ var invokeSmartContract = async (provider, account, name, index, subIndex, schem
|
|
256
264
|
return null;
|
257
265
|
}
|
258
266
|
};
|
259
|
-
var getWeb3ID = async (
|
267
|
+
var getWeb3ID = async (account, gRPCClient, network) => {
|
260
268
|
try {
|
261
269
|
const dataNFT = await invokeSmartContract(
|
262
|
-
provider,
|
263
270
|
account,
|
264
|
-
NFT_SMARTCONTRACT.name,
|
265
|
-
NFT_SMARTCONTRACT.index,
|
266
|
-
NFT_SMARTCONTRACT.subIndex,
|
267
|
-
NFT_SMARTCONTRACT.schema,
|
268
|
-
"view"
|
271
|
+
network === "testnet" ? NFT_SMARTCONTRACT_TESTNET.name : NFT_SMARTCONTRACT.name,
|
272
|
+
network === "testnet" ? NFT_SMARTCONTRACT_TESTNET.index : NFT_SMARTCONTRACT.index,
|
273
|
+
network === "testnet" ? NFT_SMARTCONTRACT_TESTNET.subIndex : NFT_SMARTCONTRACT.subIndex,
|
274
|
+
network === "testnet" ? NFT_SMARTCONTRACT_TESTNET.schema : NFT_SMARTCONTRACT.schema,
|
275
|
+
"view",
|
276
|
+
gRPCClient
|
269
277
|
);
|
270
278
|
const nft = dataNFT?.state?.find((arrVal) => account === arrVal[0]?.Account[0]);
|
271
279
|
if (nft) {
|
272
280
|
const tokens = nft[1]["owned_tokens"];
|
273
281
|
if (tokens) {
|
274
|
-
|
275
|
-
provider,
|
276
|
-
account,
|
277
|
-
WHITELIST_SMARTCONTRACT.name,
|
278
|
-
WHITELIST_SMARTCONTRACT.index,
|
279
|
-
WHITELIST_SMARTCONTRACT.subIndex,
|
280
|
-
WHITELIST_SMARTCONTRACT.schema,
|
281
|
-
"view"
|
282
|
-
);
|
283
|
-
const web3id = data?.state?.filter((arrVal) => tokens.includes(arrVal[1]?.token));
|
284
|
-
if (web3id && web3id[0][0]) {
|
285
|
-
return web3id[0][0];
|
286
|
-
}
|
282
|
+
return true;
|
287
283
|
}
|
288
284
|
}
|
289
285
|
} catch (error) {
|
290
|
-
return
|
286
|
+
return false;
|
291
287
|
}
|
292
|
-
return
|
288
|
+
return false;
|
293
289
|
};
|
294
290
|
|
295
291
|
// src/Hooks/useConsentStatus.ts
|
@@ -298,7 +294,8 @@ import {
|
|
298
294
|
MAINNET,
|
299
295
|
useConnection,
|
300
296
|
useConnect,
|
301
|
-
|
297
|
+
useGrpcClient,
|
298
|
+
TESTNET
|
302
299
|
} from "@concordium/react-components";
|
303
300
|
|
304
301
|
// src/Hooks/config.ts
|
@@ -325,6 +322,7 @@ var WALLET_CONNECT = ephemeralConnectorType(
|
|
325
322
|
// src/Hooks/useConsentStatus.ts
|
326
323
|
import { isDesktop } from "react-device-detect";
|
327
324
|
import { useAccount } from "wagmi";
|
325
|
+
import { BlockHash } from "@concordium/web-sdk";
|
328
326
|
var useConsentStatus = (endpoint, props) => {
|
329
327
|
const [show, setShow] = useState(false);
|
330
328
|
const [showRevoke, setShowRevoke] = useState(false);
|
@@ -366,29 +364,27 @@ var useConsentStatus = (endpoint, props) => {
|
|
366
364
|
})();
|
367
365
|
}
|
368
366
|
}, [analyticsContext.visitor_uuid]);
|
369
|
-
const { connection, setConnection, account
|
370
|
-
connectedAccounts,
|
371
|
-
genesisHashes
|
372
|
-
);
|
367
|
+
const { connection, setConnection, account } = useConnection(connectedAccounts, genesisHashes);
|
373
368
|
const { connect, connectError } = useConnect(activeConnector, setConnection);
|
374
369
|
const [, setRpcGenesisHash] = useState();
|
375
370
|
const [, setRpcError] = useState("");
|
371
|
+
const rpc = useGrpcClient(network);
|
376
372
|
useEffect(() => {
|
377
|
-
if (
|
373
|
+
if (rpc) {
|
378
374
|
setRpcGenesisHash(void 0);
|
379
|
-
|
380
|
-
const status = await rpc.getConsensusStatus();
|
375
|
+
rpc.getConsensusStatus().then((status) => {
|
381
376
|
return status.genesisBlock;
|
382
377
|
}).then((hash) => {
|
383
|
-
const network2 = "mainnet";
|
384
378
|
let r = false;
|
385
|
-
switch (
|
379
|
+
switch (network?.name) {
|
380
|
+
case "testnet":
|
381
|
+
r = BlockHash.toHexString(hash) === TESTNET.genesisHash;
|
382
|
+
break;
|
386
383
|
default:
|
387
|
-
r = hash === MAINNET.genesisHash;
|
384
|
+
r = BlockHash.toHexString(hash) === MAINNET.genesisHash;
|
388
385
|
}
|
389
386
|
if (!r) {
|
390
|
-
|
391
|
-
throw new Error(`Please change the network to ${network3} in Wallet`);
|
387
|
+
throw new Error(`Please change the network to ${network} in Wallet`);
|
392
388
|
}
|
393
389
|
setRpcGenesisHash(hash);
|
394
390
|
setRpcError("");
|
@@ -398,7 +394,7 @@ var useConsentStatus = (endpoint, props) => {
|
|
398
394
|
setRpcError(err.message);
|
399
395
|
});
|
400
396
|
}
|
401
|
-
}, [
|
397
|
+
}, [rpc]);
|
402
398
|
useEffect(() => {
|
403
399
|
const initConnector = async () => {
|
404
400
|
if (isDesktop && sessionStorage.getItem("aesirx-analytics-revoke") !== "1" && sessionStorage.getItem("aesirx-analytics-revoke") !== "2") {
|
@@ -426,14 +422,14 @@ var useConsentStatus = (endpoint, props) => {
|
|
426
422
|
(async () => {
|
427
423
|
try {
|
428
424
|
let l = level;
|
429
|
-
if (
|
425
|
+
if (rpc) {
|
430
426
|
if (l < 3) {
|
431
427
|
setLevel(null);
|
432
428
|
l = 3;
|
433
|
-
let web3ID2 =
|
429
|
+
let web3ID2 = false;
|
434
430
|
if (account && sessionStorage.getItem("aesirx-analytics-consent-type") !== "metamask") {
|
435
|
-
web3ID2 = await getWeb3ID(
|
436
|
-
if (web3ID2) {
|
431
|
+
web3ID2 = await getWeb3ID(account, rpc, network?.name);
|
432
|
+
if (web3ID2 === true) {
|
437
433
|
l = 4;
|
438
434
|
}
|
439
435
|
}
|
@@ -443,7 +439,7 @@ var useConsentStatus = (endpoint, props) => {
|
|
443
439
|
} else if (connector) {
|
444
440
|
if (l < 3) {
|
445
441
|
l = 3;
|
446
|
-
const web3ID2 =
|
442
|
+
const web3ID2 = false;
|
447
443
|
setWeb3ID(web3ID2);
|
448
444
|
setLevel(l);
|
449
445
|
} else {
|
@@ -465,6 +461,9 @@ var useConsentStatus = (endpoint, props) => {
|
|
465
461
|
const handleLevel = useCallback(
|
466
462
|
async (_level) => {
|
467
463
|
setLevel(_level);
|
464
|
+
if (_level > 3 && isDesktop && !connection && window["concordium"]) {
|
465
|
+
setActiveConnectorType(BROWSER_WALLET);
|
466
|
+
}
|
468
467
|
},
|
469
468
|
[level]
|
470
469
|
);
|
@@ -9440,6 +9439,9 @@ body.modal-sso-open .aesirxconsent .toast-container {
|
|
9440
9439
|
}
|
9441
9440
|
[data-bs-theme=dark] .aesirxconsent .text-primary {
|
9442
9441
|
color: #fff;
|
9442
|
+
}
|
9443
|
+
[data-bs-theme=dark] .aesirxconsent .minimize-shield-wrapper .text {
|
9444
|
+
color: #fff;
|
9443
9445
|
}`;
|
9444
9446
|
document.head.appendChild(document.createElement("style")).appendChild(document.createTextNode(css));
|
9445
9447
|
|
@@ -9515,12 +9517,12 @@ var TermsComponent = ({ children, level, handleLevel }) => {
|
|
9515
9517
|
const handleReadmore = (status) => {
|
9516
9518
|
setShowReadmore(status);
|
9517
9519
|
};
|
9518
|
-
const [showReadmore, setShowReadmore] = useState2(
|
9520
|
+
const [showReadmore, setShowReadmore] = useState2(false);
|
9519
9521
|
return /* @__PURE__ */ React.createElement(React.Fragment, null, terms.map(
|
9520
|
-
(term, key) => term.level === level && /* @__PURE__ */ React.createElement(Fragment, { key }, /* @__PURE__ */ React.createElement("div", { className: "rounded-top d-flex justify-content-between bg-white p-3 fw-medium flex-wrap border-bottom" }, /* @__PURE__ */ React.createElement("div", { className: "text-primary" }, t(term.name)), /* @__PURE__ */ React.createElement("div", { className: "d-flex align-items-center fs-14 text-primary" }, /* @__PURE__ */ React.createElement("div", { className: `status-tier tier-${term.level} rounded-circle` }), /* @__PURE__ */ React.createElement("div", { className: "status-tier-text" }, t(term.tier), " - ", t(term.levelname)))), /* @__PURE__ */ React.createElement("div", { className: "p-3 bg-white" }, /* @__PURE__ */ React.createElement("span", { className: "text-dark fw-medium" }, t(term.content)), " ", /* @__PURE__ */ React.createElement("span", { className: "" }, t(term.term)), /* @__PURE__ */ React.createElement("div", { className: "read-more d-flex justify-content-between align-items-center" }, term.upgrade && /* @__PURE__ */ React.createElement(
|
9522
|
+
(term, key) => term.level === level && /* @__PURE__ */ React.createElement(Fragment, { key }, /* @__PURE__ */ React.createElement("div", { className: "rounded-top d-flex justify-content-between bg-white p-3 fw-medium flex-wrap border-bottom" }, /* @__PURE__ */ React.createElement("div", { className: "text-primary" }, t(term.name)), /* @__PURE__ */ React.createElement("div", { className: "d-flex align-items-center fs-14 text-primary" }, /* @__PURE__ */ React.createElement("div", { className: `status-tier tier-${term.level} rounded-circle` }), /* @__PURE__ */ React.createElement("div", { className: "status-tier-text" }, t(term.tier), " - ", t(term.levelname)))), /* @__PURE__ */ React.createElement("div", { className: "p-3 bg-white" }, /* @__PURE__ */ React.createElement("span", { className: "text-dark fw-medium" }, t(term.content)), " ", /* @__PURE__ */ React.createElement("span", { className: "" }, t(term.term)), /* @__PURE__ */ React.createElement("div", { className: "read-more d-flex justify-content-between align-items-center flex-wrap" }, term.upgrade && /* @__PURE__ */ React.createElement(
|
9521
9523
|
"a",
|
9522
9524
|
{
|
9523
|
-
className: "fs-14 text-success fw-bold",
|
9525
|
+
className: "fs-14 text-success fw-bold mb-1",
|
9524
9526
|
href: "#",
|
9525
9527
|
onClick: () => handleLevel(terms[key + 1].level)
|
9526
9528
|
},
|
@@ -9528,7 +9530,7 @@ var TermsComponent = ({ children, level, handleLevel }) => {
|
|
9528
9530
|
), /* @__PURE__ */ React.createElement(
|
9529
9531
|
"div",
|
9530
9532
|
{
|
9531
|
-
className: "ms-auto read-more-btn",
|
9533
|
+
className: "ms-auto read-more-btn mb-1",
|
9532
9534
|
onClick: () => {
|
9533
9535
|
handleReadmore(!showReadmore ? true : false);
|
9534
9536
|
}
|
@@ -9566,9 +9568,11 @@ import {
|
|
9566
9568
|
WithWalletConnector,
|
9567
9569
|
useConnection as useConnection2,
|
9568
9570
|
useConnect as useConnect2,
|
9569
|
-
stringMessage as stringMessage2
|
9571
|
+
stringMessage as stringMessage2,
|
9572
|
+
useGrpcClient as useGrpcClient2,
|
9573
|
+
TESTNET as TESTNET2
|
9570
9574
|
} from "@concordium/react-components";
|
9571
|
-
import { OsTypes, isMobile as isMobile2, osName } from "react-device-detect";
|
9575
|
+
import { OsTypes, isDesktop as isDesktop3, isMobile as isMobile2, osName } from "react-device-detect";
|
9572
9576
|
|
9573
9577
|
// src/Components/LoadingStatus.tsx
|
9574
9578
|
import React2 from "react";
|
@@ -9875,8 +9879,8 @@ var SSOEthereumProvider = ({ children }) => {
|
|
9875
9879
|
var Ethereum_default = SSOEthereumProvider;
|
9876
9880
|
|
9877
9881
|
// src/Components/Consent.tsx
|
9878
|
-
var ConsentComponent = ({ endpoint, aesirXEndpoint }) => {
|
9879
|
-
return /* @__PURE__ */ React6.createElement(WithWalletConnector, { network: MAINNET2 }, (props) => /* @__PURE__ */ React6.createElement("div", { className: "aesirxconsent" }, /* @__PURE__ */ React6.createElement(Ethereum_default, null, /* @__PURE__ */ React6.createElement(ConsentComponentApp, { ...props, endpoint, aesirXEndpoint }))));
|
9882
|
+
var ConsentComponent = ({ endpoint, aesirXEndpoint, networkEnv }) => {
|
9883
|
+
return /* @__PURE__ */ React6.createElement(WithWalletConnector, { network: networkEnv === "testnet" ? TESTNET2 : MAINNET2 }, (props) => /* @__PURE__ */ React6.createElement("div", { className: "aesirxconsent" }, /* @__PURE__ */ React6.createElement(Ethereum_default, null, /* @__PURE__ */ React6.createElement(ConsentComponentApp, { ...props, endpoint, aesirXEndpoint }))));
|
9880
9884
|
};
|
9881
9885
|
var ConsentComponentApp = (props) => {
|
9882
9886
|
const {
|
@@ -9887,12 +9891,13 @@ var ConsentComponentApp = (props) => {
|
|
9887
9891
|
activeConnectorError,
|
9888
9892
|
connectedAccounts,
|
9889
9893
|
genesisHashes,
|
9890
|
-
setActiveConnectorType
|
9894
|
+
setActiveConnectorType,
|
9895
|
+
network
|
9891
9896
|
} = props;
|
9892
9897
|
const { setConnection } = useConnection2(connectedAccounts, genesisHashes);
|
9893
9898
|
const { isConnecting } = useConnect2(activeConnector, setConnection);
|
9894
|
-
const handleOnConnect = async (connectorType,
|
9895
|
-
if (
|
9899
|
+
const handleOnConnect = async (connectorType, network2 = "concordium") => {
|
9900
|
+
if (network2 === "concordium") {
|
9896
9901
|
setActiveConnectorType(connectorType);
|
9897
9902
|
}
|
9898
9903
|
setLoading("done");
|
@@ -9916,8 +9921,10 @@ var ConsentComponentApp = (props) => {
|
|
9916
9921
|
const [showExpandConsent, setShowExpandConsent] = useState5(true);
|
9917
9922
|
const [showExpandRevoke, setShowExpandRevoke] = useState5(false);
|
9918
9923
|
const [showBackdrop, setShowBackdrop] = useState5(true);
|
9924
|
+
const [consentTier4, setConsentTier4] = useState5({});
|
9919
9925
|
const analyticsContext = useContext2(AnalyticsContext);
|
9920
9926
|
const { t } = useTranslation();
|
9927
|
+
const gRPCClient = useGrpcClient2(network);
|
9921
9928
|
const { address, connector } = useAccount3();
|
9922
9929
|
const { signMessage } = useSignMessage({
|
9923
9930
|
async onSuccess(data, variables) {
|
@@ -9951,7 +9958,12 @@ var ConsentComponentApp = (props) => {
|
|
9951
9958
|
const res = await verifySignature(aesirXEndpoint, "metamask", address, data);
|
9952
9959
|
sessionStorage.setItem("aesirx-analytics-jwt", res?.jwt);
|
9953
9960
|
setLoadingCheckAccount(false);
|
9954
|
-
const nonce = await getNonce(
|
9961
|
+
const nonce = await getNonce(
|
9962
|
+
endpoint,
|
9963
|
+
address,
|
9964
|
+
"Give consent Tier 4:{nonce} {domain} {time}",
|
9965
|
+
"metamask"
|
9966
|
+
);
|
9955
9967
|
signMessage({ message: `${nonce}` });
|
9956
9968
|
} else {
|
9957
9969
|
setLoading("saving");
|
@@ -10038,7 +10050,7 @@ var ConsentComponentApp = (props) => {
|
|
10038
10050
|
endpoint,
|
10039
10051
|
account,
|
10040
10052
|
connection,
|
10041
|
-
level === 3 ? "Give consent:{}" : "Give consent Tier 4:{}"
|
10053
|
+
level === 3 ? "Give consent:{nonce} {domain} {time}" : "Give consent Tier 4:{nonce} {domain} {time}"
|
10042
10054
|
);
|
10043
10055
|
setLoading("saving");
|
10044
10056
|
await agreeConsents(endpoint, level, uuid, consents, account, signature, web3ID, jwt);
|
@@ -10048,7 +10060,7 @@ var ConsentComponentApp = (props) => {
|
|
10048
10060
|
const nonce = await getNonce(
|
10049
10061
|
endpoint,
|
10050
10062
|
address,
|
10051
|
-
level === 3 ? "Give consent:{}" : "Give consent Tier 4:{}",
|
10063
|
+
level === 3 ? "Give consent:{nonce} {domain} {time}" : "Give consent Tier 4:{nonce} {domain} {time}",
|
10052
10064
|
"metamask"
|
10053
10065
|
);
|
10054
10066
|
signMessage({ message: `${nonce}` });
|
@@ -10084,6 +10096,66 @@ var ConsentComponentApp = (props) => {
|
|
10084
10096
|
toast2.error(error?.response?.data?.error ?? error.message);
|
10085
10097
|
}
|
10086
10098
|
};
|
10099
|
+
useEffect2(() => {
|
10100
|
+
const init = async () => {
|
10101
|
+
if (Object.keys(consentTier4)?.length && (account || address)) {
|
10102
|
+
await consentTier4Init(consentTier4);
|
10103
|
+
setConsentTier4({});
|
10104
|
+
}
|
10105
|
+
};
|
10106
|
+
init();
|
10107
|
+
}, [consentTier4, account, address]);
|
10108
|
+
const consentTier4Init = async (response) => {
|
10109
|
+
let hasWeb3ID = true;
|
10110
|
+
if (response?.loginType === "concordium") {
|
10111
|
+
const web3ID2 = await getWeb3ID(account, gRPCClient, network?.name);
|
10112
|
+
if (web3ID2) {
|
10113
|
+
setWeb3ID(web3ID2);
|
10114
|
+
} else {
|
10115
|
+
hasWeb3ID = false;
|
10116
|
+
}
|
10117
|
+
} else {
|
10118
|
+
const memberData = await getMember(aesirXEndpoint, response?.access_token);
|
10119
|
+
hasWeb3ID = memberData?.web3id ? true : false;
|
10120
|
+
}
|
10121
|
+
if (hasWeb3ID) {
|
10122
|
+
if (response?.loginType === "concordium") {
|
10123
|
+
sessionStorage.setItem("aesirx-analytics-consent-type", "concordium");
|
10124
|
+
const signature = await getSignature(
|
10125
|
+
endpoint,
|
10126
|
+
account,
|
10127
|
+
connection,
|
10128
|
+
"Give consent Tier 4:{nonce} {domain} {time}"
|
10129
|
+
);
|
10130
|
+
await agreeConsents(
|
10131
|
+
endpoint,
|
10132
|
+
level,
|
10133
|
+
uuid,
|
10134
|
+
consents,
|
10135
|
+
account,
|
10136
|
+
signature,
|
10137
|
+
null,
|
10138
|
+
response?.jwt
|
10139
|
+
);
|
10140
|
+
setShow(false);
|
10141
|
+
handleRevoke(true, level);
|
10142
|
+
setLoading("done");
|
10143
|
+
} else if (response?.loginType === "metamask") {
|
10144
|
+
sessionStorage.setItem("aesirx-analytics-consent-type", "metamask");
|
10145
|
+
const nonce = await getNonce(
|
10146
|
+
endpoint,
|
10147
|
+
address,
|
10148
|
+
"Give consent Tier 4:{nonce} {domain} {time}",
|
10149
|
+
"metamask"
|
10150
|
+
);
|
10151
|
+
signMessage({ message: `${nonce}` });
|
10152
|
+
}
|
10153
|
+
} else {
|
10154
|
+
handleLevel(3);
|
10155
|
+
toast2("You haven't minted any WEB3 ID yet. Try to mint at https://dapp.shield.aesirx.io");
|
10156
|
+
setLoading("done");
|
10157
|
+
}
|
10158
|
+
};
|
10087
10159
|
const onGetData = async (response) => {
|
10088
10160
|
try {
|
10089
10161
|
setLoading("saving");
|
@@ -10097,52 +10169,10 @@ var ConsentComponentApp = (props) => {
|
|
10097
10169
|
handleRevokeBtn();
|
10098
10170
|
} else {
|
10099
10171
|
if (level === 4) {
|
10100
|
-
|
10101
|
-
|
10102
|
-
const web3ID2 = await getWeb3ID(connection, account);
|
10103
|
-
if (web3ID2) {
|
10104
|
-
setWeb3ID(web3ID2);
|
10105
|
-
} else {
|
10106
|
-
hasWeb3ID = false;
|
10107
|
-
}
|
10108
|
-
} else {
|
10109
|
-
const memberData = await getMember(aesirXEndpoint, response?.access_token);
|
10110
|
-
hasWeb3ID = memberData?.web3id ? true : false;
|
10111
|
-
}
|
10112
|
-
if (hasWeb3ID) {
|
10113
|
-
if (response?.loginType === "concordium") {
|
10114
|
-
sessionStorage.setItem("aesirx-analytics-consent-type", "concordium");
|
10115
|
-
const signature = await getSignature(
|
10116
|
-
endpoint,
|
10117
|
-
account,
|
10118
|
-
connection,
|
10119
|
-
"Give consent Tier 4:{}"
|
10120
|
-
);
|
10121
|
-
await agreeConsents(
|
10122
|
-
endpoint,
|
10123
|
-
level,
|
10124
|
-
uuid,
|
10125
|
-
consents,
|
10126
|
-
account,
|
10127
|
-
signature,
|
10128
|
-
null,
|
10129
|
-
response?.jwt
|
10130
|
-
);
|
10131
|
-
setShow(false);
|
10132
|
-
handleRevoke(true, level);
|
10133
|
-
setLoading("done");
|
10134
|
-
} else if (response?.loginType === "metamask") {
|
10135
|
-
sessionStorage.setItem("aesirx-analytics-consent-type", "metamask");
|
10136
|
-
const nonce = await getNonce(endpoint, address, "Give consent Tier 4:{}", "metamask");
|
10137
|
-
signMessage({ message: `${nonce}` });
|
10138
|
-
}
|
10139
|
-
} else {
|
10140
|
-
handleLevel(3);
|
10141
|
-
toast2(
|
10142
|
-
"You haven't minted any WEB3 ID yet. Try to mint at https://dapp.shield.aesirx.io"
|
10143
|
-
);
|
10144
|
-
setLoading("done");
|
10172
|
+
if (response?.loginType === "concordium" && isDesktop3) {
|
10173
|
+
setActiveConnectorType(BROWSER_WALLET);
|
10145
10174
|
}
|
10175
|
+
setConsentTier4(response);
|
10146
10176
|
} else {
|
10147
10177
|
await agreeConsents(endpoint, level, uuid, consents, null, null, null, response?.jwt);
|
10148
10178
|
setShow(false);
|
@@ -10181,7 +10211,7 @@ var ConsentComponentApp = (props) => {
|
|
10181
10211
|
endpoint,
|
10182
10212
|
account,
|
10183
10213
|
connection,
|
10184
|
-
"Revoke consent:{}"
|
10214
|
+
"Revoke consent:{nonce} {domain} {time}"
|
10185
10215
|
);
|
10186
10216
|
setLoading("saving");
|
10187
10217
|
const consentList = await getConsents(endpoint, uuid);
|
@@ -10201,7 +10231,12 @@ var ConsentComponentApp = (props) => {
|
|
10201
10231
|
} else if (connector) {
|
10202
10232
|
setLoading("sign");
|
10203
10233
|
setLoading("saving");
|
10204
|
-
const nonce = await getNonce(
|
10234
|
+
const nonce = await getNonce(
|
10235
|
+
endpoint,
|
10236
|
+
address,
|
10237
|
+
"Revoke consent:{nonce} {domain} {time}",
|
10238
|
+
"metamask"
|
10239
|
+
);
|
10205
10240
|
signMessage({ message: `${nonce}` });
|
10206
10241
|
} else {
|
10207
10242
|
setLoading("connect");
|