Search
Search

Transaction: 7X3joXU...a4ot

Signed by
Receiver
Status
Succeeded
Transaction Fee
0.00097 
Deposit Value
0 
Gas Used
9 Tgas
Attached Gas
100 Tgas
Created
April 28, 2023 at 10:27:13pm
Hash
7X3joXUGdGJBpnkPU7GvPh2RyPsL6Ss6fcisGTLwa4ot

Actions

Called method: 'set' in contract: social.near
Arguments:
{ "data": { "let45fc.near": { "widget": { "UsersMatcher": { "": "// inspired by https://near.social/#/wendersonpires.near/widget/Chat\n\nif (typeof props.loadRoomCallback != \"function\") {\n return (\n <h2>\n It's reusable widget and cannot work alone. You have to pass the\n loadRoomCallback function in props. Found type:{\" \"}\n {typeof props.loadRoomCallback}\n </h2>\n );\n}\n\nState.init({\n roomId: props.roomId || null,\n errorMessage: null,\n roomCreatedScreen: false,\n loading: false,\n});\n\nconst uuidv4 = () => {\n var u = \"\",\n i = 0;\n while (i++ < 36) {\n var c = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\"[i - 1],\n r = (Math.random() * 16) | 0,\n v = c == \"x\" ? r : (r & 0x3) | 0x8;\n u += c == \"-\" || c == \"4\" ? c : v.toString(16);\n }\n return u;\n};\n\nconst generateRoomId = () => {\n return `${context.accountId}---${props.widgetKey}-room-${uuidv4()}`;\n};\n\nconst findRoom = (created) => {\n if (created) {\n created = false;\n }\n\n const roomId = state.roomId;\n const ownerAccountId = roomId.split(\"---\")[0];\n const queryString = `${ownerAccountId}/${props.widgetKey}/${state.roomId}`;\n let roomData = Social.getr(queryString);\n if (!state.loading) {\n setTimeout(() => {\n roomData = Social.getr(queryString);\n console.log(roomData);\n if (!roomData) {\n State.update({\n errorMessage: `Room not found. If you are sure the room with specified ID exists, this might be a delay on blockchain, \n so don't hesitate enter your room ID and try again connecting!`,\n });\n State.update({ loading: false });\n return;\n }\n State.update({\n roomData: roomData,\n });\n\n if (props.loadRoomCallback && roomData) {\n props.loadRoomCallback(roomData, state.roomId, created);\n }\n }, 1000);\n State.update({ loading: true });\n }\n};\n\nif (state.loading) {\n return <h1>Loading... If it's infinite, reload the page.</h1>;\n}\n\nif (state.roomCreatedScreen) {\n return (\n <div class=\"container\">\n <div class=\"row\">\n <h2>Room creation</h2>\n <p>Your room {props.urlPrefix ? \"link\" : \"ID\"} will be:</p>\n <pre class=\"text-danger\">{`${props.urlPrefix ? props.urlPrefix : \"\"}${\n state.roomId\n }`}</pre>\n <p>Please copy it and send to your friend(s) after creating :-)</p>\n </div>\n <CommitButton\n class=\"btn btn-success\"\n onCommit={() => {\n findRoom(true);\n }}\n data={{\n [props.widgetKey]: {\n [state.roomId]: {\n createdTimestamp: Date.now(),\n ...(props.initialValue || {}),\n },\n },\n }}\n >\n Create Room & Go\n </CommitButton>\n </div>\n );\n}\n\nreturn (\n <div class=\"container\">\n <div class=\"row mt-3\">\n <div class=\"col-12\">\n <h3>{props.widgetName}</h3>\n </div>\n <div class=\"col-12\">\n <input\n type=\"text\"\n class=\"form-control\"\n placeHolder=\"Enter room id\"\n value={state.roomId}\n onChange={(e) => {\n const roomId = e.target.value;\n State.update({ roomId });\n }}\n />\n </div>\n </div>\n {state.errorMessage && (\n <div class=\"row mt-4\">\n <div class=\"col-12\">\n <p class=\"text-danger\">{state.errorMessage}</p>\n </div>\n </div>\n )}\n <div class=\"row mt-4\">\n <div class=\"col-6 text-end\">\n <button class=\"btn btn-success\" onClick={() => findRoom(false)}>\n Connect to room\n </button>\n </div>\n <div class=\"col-6\">\n <button\n class=\"btn btn-primary\"\n onClick={() => {\n const newRoomId = generateRoomId();\n State.update({ roomId: newRoomId, roomCreatedScreen: true });\n }}\n >\n Create new room\n </button>\n </div>\n </div>\n </div>\n);\n" } } } } }

Transaction Execution Plan

Convert Transaction To Receipt
Gas Burned:
2 Tgas
Tokens Burned:
0.00024 
Receipt:
Predecessor ID:
Receiver ID:
Gas Burned:
7 Tgas
Tokens Burned:
0.00073 
Called method: 'set' in contract: social.near
Arguments:
{ "data": { "let45fc.near": { "widget": { "UsersMatcher": { "": "// inspired by https://near.social/#/wendersonpires.near/widget/Chat\n\nif (typeof props.loadRoomCallback != \"function\") {\n return (\n <h2>\n It's reusable widget and cannot work alone. You have to pass the\n loadRoomCallback function in props. Found type:{\" \"}\n {typeof props.loadRoomCallback}\n </h2>\n );\n}\n\nState.init({\n roomId: props.roomId || null,\n errorMessage: null,\n roomCreatedScreen: false,\n loading: false,\n});\n\nconst uuidv4 = () => {\n var u = \"\",\n i = 0;\n while (i++ < 36) {\n var c = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\"[i - 1],\n r = (Math.random() * 16) | 0,\n v = c == \"x\" ? r : (r & 0x3) | 0x8;\n u += c == \"-\" || c == \"4\" ? c : v.toString(16);\n }\n return u;\n};\n\nconst generateRoomId = () => {\n return `${context.accountId}---${props.widgetKey}-room-${uuidv4()}`;\n};\n\nconst findRoom = (created) => {\n if (created) {\n created = false;\n }\n\n const roomId = state.roomId;\n const ownerAccountId = roomId.split(\"---\")[0];\n const queryString = `${ownerAccountId}/${props.widgetKey}/${state.roomId}`;\n let roomData = Social.getr(queryString);\n if (!state.loading) {\n setTimeout(() => {\n roomData = Social.getr(queryString);\n console.log(roomData);\n if (!roomData) {\n State.update({\n errorMessage: `Room not found. If you are sure the room with specified ID exists, this might be a delay on blockchain, \n so don't hesitate enter your room ID and try again connecting!`,\n });\n State.update({ loading: false });\n return;\n }\n State.update({\n roomData: roomData,\n });\n\n if (props.loadRoomCallback && roomData) {\n props.loadRoomCallback(roomData, state.roomId, created);\n }\n }, 1000);\n State.update({ loading: true });\n }\n};\n\nif (state.loading) {\n return <h1>Loading... If it's infinite, reload the page.</h1>;\n}\n\nif (state.roomCreatedScreen) {\n return (\n <div class=\"container\">\n <div class=\"row\">\n <h2>Room creation</h2>\n <p>Your room {props.urlPrefix ? \"link\" : \"ID\"} will be:</p>\n <pre class=\"text-danger\">{`${props.urlPrefix ? props.urlPrefix : \"\"}${\n state.roomId\n }`}</pre>\n <p>Please copy it and send to your friend(s) after creating :-)</p>\n </div>\n <CommitButton\n class=\"btn btn-success\"\n onCommit={() => {\n findRoom(true);\n }}\n data={{\n [props.widgetKey]: {\n [state.roomId]: {\n createdTimestamp: Date.now(),\n ...(props.initialValue || {}),\n },\n },\n }}\n >\n Create Room & Go\n </CommitButton>\n </div>\n );\n}\n\nreturn (\n <div class=\"container\">\n <div class=\"row mt-3\">\n <div class=\"col-12\">\n <h3>{props.widgetName}</h3>\n </div>\n <div class=\"col-12\">\n <input\n type=\"text\"\n class=\"form-control\"\n placeHolder=\"Enter room id\"\n value={state.roomId}\n onChange={(e) => {\n const roomId = e.target.value;\n State.update({ roomId });\n }}\n />\n </div>\n </div>\n {state.errorMessage && (\n <div class=\"row mt-4\">\n <div class=\"col-12\">\n <p class=\"text-danger\">{state.errorMessage}</p>\n </div>\n </div>\n )}\n <div class=\"row mt-4\">\n <div class=\"col-6 text-end\">\n <button class=\"btn btn-success\" onClick={() => findRoom(false)}>\n Connect to room\n </button>\n </div>\n <div class=\"col-6\">\n <button\n class=\"btn btn-primary\"\n onClick={() => {\n const newRoomId = generateRoomId();\n State.update({ roomId: newRoomId, roomCreatedScreen: true });\n }}\n >\n Create new room\n </button>\n </div>\n </div>\n </div>\n);\n" } } } } }
Empty result
No logs
Receipt:
Predecessor ID:
Receiver ID:
Gas Burned:
223 Ggas
Tokens Burned:
0 
Transferred 0.01833  to let45fc.near
Empty result
No logs