okTurtles / group-income

A decentralized and private (end-to-end encrypted) financial safety net for you and your friends.
https://groupincome.org
GNU Affero General Public License v3.0
331 stars 44 forks source link

Stuck on /pending-approval page #2183

Open taoeffect opened 3 months ago

taoeffect commented 3 months ago

Problem

During development (grunt dev), I signed up a user. I ran into this bug (and this related issue). This means that I was able to create the identity contract, but not subscribe to it. I continued then to create the group contract, and arrived at the /pending-approval page.

I then saw TypeError: can't access property "_vm", state is undefined:

Screenshot 2024-07-14 at 11 39 12 AM

Here are some related sections of code from that stacktrace:

utils.js:18:

Screenshot 2024-07-14 at 11 40 16 AM

chatroom.js:71:

Screenshot 2024-07-14 at 11 43 09 AM

group.js:602:

Screenshot 2024-07-14 at 11 40 06 AM

utils.js:133:

Screenshot 2024-07-14 at 11 44 50 AM

Upon refresh the web socket seemed to connect, but there were no more errors and I was still at the /pending-approval page.

Screenshot 2024-07-09 at 8 56 27 PM

It seems like part of the joining group process got interrupted. Perhaps some data is not there to trigger the related key messages from group/join.

So I grabbed the state/vuex/state:

```json { "currentGroupId": "z9brRu3VMMtq9f1etT3F3cTpuHk52DDQqEGx6o3QgCv8CuqahtNx", "contracts": { "z9brRu3VQbMDrRPtJrVABYn3w1LhFZSFKKFYGSmq6DLhxBQrCJ7D": { "references": 1, "type": "gi.contracts/identity", "HEAD": "z9brRu3VXPh9W8nYYGLKtYuaH1Vh5jED4K9kHhQq9K3UkyRsEfz9", "height": 2 }, "z9brRu3VMMtq9f1etT3F3cTpuHk52DDQqEGx6o3QgCv8CuqahtNx": { "type": "gi.contracts/group", "HEAD": "z9brRu3VFFwroEGWwfFiRyfqYggRzH7UphM5LnBZGbYCyku2pf9a", "height": 2 }, "z9brRu3VKL6XW6WyvKbrN76kEuEdyMUTPENEcG5dFyWrQPg1TpNy": { "type": "gi.contracts/chatroom", "HEAD": "z9brRu3VLB15rRBz9ocAdnqn2mUE3NLUB4fjwranqcgHvrKHQbeb", "height": 1 } }, "loggedIn": { "identityContractID": "z9brRu3VQbMDrRPtJrVABYn3w1LhFZSFKKFYGSmq6DLhxBQrCJ7D", "encryptionParams": { "stateEncryptionKeyId": "z2DrjgbDJjgEvKdhEWmwJPhfYxUrjFYKLepSbwbT3SriXdWFa7x", "salt": "0DLfjvP9EbZPXbALMNLMHDRy", "encryptedStateEncryptionKey": "QjeE51nhnIRqvpypYGfqna8e9GGpSJXs7VNu7YfQuRd89etRqmVFOpyuGITl5j6V6VdqnRF1YxZtdOEfk6nQSBvNlFqWKgiqb8ySSmMDw/z3zsMFrlqw7iLtkcOmzLlK0YRCp9RmAT8+LJHrYCcmKerniwb0kVujSAi0FrfQ3TKJvDPUp9xEGlF1kmOfv2SCca8PC41SnceUOQ==" } }, "namespaceLookups": { "u1": "z9brRu3VQbMDrRPtJrVABYn3w1LhFZSFKKFYGSmq6DLhxBQrCJ7D" }, "periodicNotificationAlreadyFiredMap": {}, "contractSigningKeys": {}, "lastLoggedIn": {}, "preferences": {}, "notifications": { "items": [], "status": {} }, "settings": { "appLogsFilter": [ "error", "warn", "info", "debug", "log" ], "fontSize": 16, "increasedContrast": false, "notificationEnabled": true, "reducedMotion": false, "theme": "system", "themeColor": "dark" }, "chatroom": { "currentChatRoomIDs": { "z9brRu3VMMtq9f1etT3F3cTpuHk52DDQqEGx6o3QgCv8CuqahtNx": "z9brRu3VKL6XW6WyvKbrN76kEuEdyMUTPENEcG5dFyWrQPg1TpNy" }, "pendingChatRoomIDs": {}, "chatRoomScrollPosition": {}, "unreadMessages": {}, "chatNotificationSettings": {} }, "idleVue": { "isIdle": false }, "z9brRu3VQbMDrRPtJrVABYn3w1LhFZSFKKFYGSmq6DLhxBQrCJ7D": { "_vm": { "type": "gi.contracts/identity", "authorizedKeys": { "z2DrjgbGEsC9gBEGdB3N2Xyvt43jzPo1MrMsQbzHztgvVzimUbF": { "id": "z2DrjgbGEsC9gBEGdB3N2Xyvt43jzPo1MrMsQbzHztgvVzimUbF", "name": "ipk", "purpose": [ "sig" ], "ringLevel": 0, "permissions": "*", "allowedActions": "*", "meta": { "private": { "transient": true } }, "data": "[\"edwards25519sha512batch\",\"6EJ0H6Ag9ZE4sCpfImAqyiHzE824JEBvNvBws6EugeE=\",null]", "_notBeforeHeight": 0 }, "z2DrjgbCJjbUsWAhUdP6GUjN1NR1X6jDxbm38haQchWbo7PFu8L": { "id": "z2DrjgbCJjbUsWAhUdP6GUjN1NR1X6jDxbm38haQchWbo7PFu8L", "name": "iek", "purpose": [ "enc" ], "ringLevel": 0, "permissions": [ "gi.contracts/identity/keymeta" ], "meta": { "private": { "transient": true } }, "data": "[\"curve25519xsalsa20poly1305\",\"IDmEn6SJHcogduQwthmd3vHGGlttkwE17O3cwtSg1ic=\",null]", "_notBeforeHeight": 0 }, "z2Drjgb5jrS6KEe15C9NJawurd8UpxaVJv15jzXXvZUXfDoAGGX": { "id": "z2Drjgb5jrS6KEe15C9NJawurd8UpxaVJv15jzXXvZUXfDoAGGX", "name": "csk", "purpose": [ "sig" ], "ringLevel": 1, "permissions": [ "ka", "kd", "au", "ae", "a", "ca", "cd", "ks", "ku", "ae#inner" ], "allowedActions": "*", "meta": { "private": { "content": [ "z2DrjgbCJjbUsWAhUdP6GUjN1NR1X6jDxbm38haQchWbo7PFu8L", "2IhBh3vIKr64WSiryDjojZyDVdpc7UXzSYfOg2Y5KjuSFbLzXXwiXTNKv6SK1ZiIqLBDtXmAA3DKegajk0DvqiXHEZzXxAFvgQqRhHrCAi13bTsAyT9tNBieB1Ip010ql/BYhFgM745CNePuf3Zs3lt9hAkA/i8Q54BcDgpMUXli9trPXbDRbMB1ytDCFdps9K5FfAmB15koTAAZsEr3SmY1Cni1sUbCVTGpWjqJekU7RAGzFkUXtvqBgjJOm5Xypgqo7SKOeizS" ] } }, "data": "[\"edwards25519sha512batch\",\"XhH+syj0+M2yZdidhNVWu+y6zvuFDJkT7cLC7Oeozdg=\",null]", "_notBeforeHeight": 0 }, "z2DrjgbLJbU7LdHF8wALpD6c12Ee8rkA1Tx9rSzApHFar6m8ivd": { "id": "z2DrjgbLJbU7LdHF8wALpD6c12Ee8rkA1Tx9rSzApHFar6m8ivd", "name": "cek", "purpose": [ "enc" ], "ringLevel": 1, "permissions": [ "ae", "ka", "kd", "kr", "krs", "ks", "ku" ], "allowedActions": "*", "meta": { "private": { "content": [ "z2DrjgbCJjbUsWAhUdP6GUjN1NR1X6jDxbm38haQchWbo7PFu8L", "dzikBJkoabz4bdJQmencIX5TH6YsLTociVFyiviWUyvERh4nMBRtoMxNniPTRLOUvD3rwQVSTTOoiE/gcC2MLBot3knkWBu6l1/+BQFEAB7c1tjvPECDZLRVJqVC9rB+URjxFy1ZAwza8o4JAEOITUuVuQnifDvk/FY4Mf66ISCsLHi/YDXk3tID03vjYwydKgVs8j8LnxT+R47b5g84qw==" ] } }, "data": "[\"curve25519xsalsa20poly1305\",\"kq82tI/2EE/tgq/dWAvX1NCapFsELOxfjcMCJMsq1Wc=\",null]", "_notBeforeHeight": 0 }, "z2DrjgbG6yWJhZytibd5CMcJwsxqLYSVXwrSW56W1x3kmRQ4iTs": { "id": "z2DrjgbG6yWJhZytibd5CMcJwsxqLYSVXwrSW56W1x3kmRQ4iTs", "name": "pek", "purpose": [ "enc" ], "ringLevel": 2, "permissions": [ "ae" ], "allowedActions": [ "gi.actions/identity/setAttributes" ], "meta": { "private": { "content": [ "z2DrjgbLJbU7LdHF8wALpD6c12Ee8rkA1Tx9rSzApHFar6m8ivd", "icc8+ohkCCXZLFDmXGMy89Yg2fIibYIjzELACypFeiHXSPlI0ZLTxMuH4sHkZaNuRkMO6RdO1tonLwu8lLeOzeW0PtNRFCgx1m9cihE1Bj3eDq27euPnGf2clH3YTxXfe4n6FHOhzHOM5InPoJdBd2BV8KIC0fFjrKvmu5E4WW3d6pQDTD29v0m959Sn9IkL6D6tzztX0dopfR/iQIVuaQ==" ] } }, "data": "[\"curve25519xsalsa20poly1305\",\"Fh8IIwyYJJAtB053luS2crHnp2UX9AZC+g70t7tyBR4=\",null]", "_notBeforeHeight": 0 }, "z2Drjgb8UUfRRd4tZ5RAZBbqPR5K7eoixC4e6myHkb4sxEXW8oF": { "id": "z2Drjgb8UUfRRd4tZ5RAZBbqPR5K7eoixC4e6myHkb4sxEXW8oF", "name": "#sak", "purpose": [ "sak" ], "ringLevel": 0, "permissions": [], "allowedActions": [], "meta": { "private": { "content": [ "z2DrjgbCJjbUsWAhUdP6GUjN1NR1X6jDxbm38haQchWbo7PFu8L", "URNcJygHymx+FpYh6dSZAoPEjsjDLWvpbMO8tV4lw2I9N+PVUudzovyCMnNjjWlBnAjOwknLsOOBLYSPo7nD9wVUJVI5SlnKXQ5qxwEQQWnnSGvk/Njglj4GXoramhdMW36iFcGfDscMt/0xlUi+vR5Hsx9DiuNIt+5GKCM66afDjbnUNXRoIjDUzd3R+6sm4GiCmmHlgkAsZOO/8fbKcal356q3jdZtBt8HYgex0NE0fKX9I20e6qTMaMnPKZqB90C+IdV7v3Dm" ] } }, "data": "[\"edwards25519sha512batch\",\"33UiM7WqV2Rq9NVFTkwSCkPidGoah3Z4ysCbGEUOtdo=\",null]", "_notBeforeHeight": 0 } } }, "settings": {}, "attributes": { "username": "u1", "email": "u1@asdf.com", "picture": { "manifestCid": "z9brRu3VSLAW8c3m7Fcij1qobZso6SacKFQQsPd6YcJzU1dL2h75", "downloadParams": { "IKM": "33EMHicV/PDiyuqJZSES31l74CIn6D35guscVY0tNuZg", "rs": 65536 } } }, "chatRooms": {}, "groups": { "z9brRu3VMMtq9f1etT3F3cTpuHk52DDQqEGx6o3QgCv8CuqahtNx": { "hash": "z9brRu3VXPh9W8nYYGLKtYuaH1Vh5jED4K9kHhQq9K3UkyRsEfz9", "inviteSecretId": "z2DrjgbDbpwkmQ5pbqVnxz4bmdhDADxLUmafAWtF8582g5v7ND3" } }, "fileDeleteTokens": {} }, "z9brRu3VMMtq9f1etT3F3cTpuHk52DDQqEGx6o3QgCv8CuqahtNx": { "_vm": { "type": "gi.contracts/group", "authorizedKeys": { "z2DrjgbDbpwkmQ5pbqVnxz4bmdhDADxLUmafAWtF8582g5v7ND3": { "id": "z2DrjgbDbpwkmQ5pbqVnxz4bmdhDADxLUmafAWtF8582g5v7ND3", "name": "csk", "purpose": [ "sig" ], "ringLevel": 1, "permissions": "*", "allowedActions": "*", "meta": { "private": { "content": [ "z2DrjgbH6kaqLmkVHiBm8HaTa3urJQowCN4xPTrzB2dzR3FMjR3", "iwZ78Ls4doV6ls6vK7/qgm31F9kNwKzc+aRUbxC2oFHXIqGEOcpqxHstxtm/lTAIYhR8VtC40eDHgpW8nSdDoINRXJ7Lt7WIeGJyIAZj5GHRt8T944tLzl+PCvbWomKN9u0B44OU7yNIfMe43EER9CRYtEF62xVS71zfrjOO8W5ELTJY3ItI0Xe6f5LE2LQJGtYPctQCes/GTDwClhs43k9hvJF/NYaJb+WvahvC2PloZmbB+RXY8pL80QiXr0UFvj3fcTZdofoY" ], "shareable": true } }, "data": "[\"edwards25519sha512batch\",\"Tv1x2JqGhbNbAQhKv/fs32AdAmKHgdM4yu3OCnWq7F8=\",null]", "_notBeforeHeight": 0 }, "z2DrjgbH6kaqLmkVHiBm8HaTa3urJQowCN4xPTrzB2dzR3FMjR3": { "id": "z2DrjgbH6kaqLmkVHiBm8HaTa3urJQowCN4xPTrzB2dzR3FMjR3", "name": "cek", "purpose": [ "enc" ], "ringLevel": 1, "permissions": "*", "allowedActions": "*", "meta": { "private": { "content": [ "z2DrjgbH6kaqLmkVHiBm8HaTa3urJQowCN4xPTrzB2dzR3FMjR3", "/n3kC+vv2nCmx4kbEI4hZSvLef11SrRQW480CXTD0ju3YKrcp0qzAUy1wsXbupHj7matTiTOZJrsAWGr6oHUxWzuq6GrGSceCAt5dgE6+1jBLlnPNNUfy4FK2liCCmy4McnU7aMMwF4HaspD0vAUBFMHkFbYZaFSGBSewXtOMOHKyIlXoZ1zjXVT1SRJn43gp77j4AVxBx67C+PxPy9PhQ==" ], "shareable": true } }, "data": "[\"curve25519xsalsa20poly1305\",\"90PzFum7f0vko9aNwIWNLhW2gnNkUiunzP/JMmoUlXU=\",null]", "_notBeforeHeight": 0 }, "z2Drjgb5nEjLyuHtZrGSyfwzdsQgk8Go2fSx6UpHSmTeGx7dZSx": { "id": "z2Drjgb5nEjLyuHtZrGSyfwzdsQgk8Go2fSx6UpHSmTeGx7dZSx", "name": "#inviteKey-z2Drjgb5nEjLyuHtZrGSyfwzdsQgk8Go2fSx6UpHSmTeGx7dZSx", "purpose": [ "sig" ], "ringLevel": 9007199254740991, "permissions": [ "kr" ], "meta": { "quantity": 60, "expires": 1723175224277, "private": { "content": [ "z2DrjgbH6kaqLmkVHiBm8HaTa3urJQowCN4xPTrzB2dzR3FMjR3", "E9+R6jAxSyeUyJN2otkXM0z2am/FYxsoKFtfRu6YQzN5bVPVjn6CA+uF3ewYfdK0op4ireVGQ11OAg8nB0kPTt+cmkhmIBNwQvvE+XXBLkD1dSc7lgW+s+z6qHEt2jOKsvaZQBJcwbFbbThMOij+3ifVIA4sKp4Rnsu/6MfulzNuZeDCl45o3FetVr0p99STY4chBxD3ZRMWM/2NTbDKtppUCd4dUodEkTgeCgqbdDA6SMjCMRsFpUVl6rpTy3NNxEZ4crntFw6K" ] } }, "data": "[\"edwards25519sha512batch\",\"oSbxfNfPLKDl5d5m4dSZ4URhW0Htr8nVOmWxNiq+Amw=\",null]", "_notBeforeHeight": 0 }, "z2DrjgbGUMW55HQ2wYV9dtvU5ofdfiCMqTJAu2yNnZjRw5R8H2w": { "id": "z2DrjgbGUMW55HQ2wYV9dtvU5ofdfiCMqTJAu2yNnZjRw5R8H2w", "name": "#sak", "purpose": [ "sak" ], "ringLevel": 0, "permissions": [], "allowedActions": [], "meta": { "private": { "content": [ "z2DrjgbH6kaqLmkVHiBm8HaTa3urJQowCN4xPTrzB2dzR3FMjR3", "i2U6EUlJViIfl5Uqlp6iP5tULaRtz63/aiRzqDlDcyJtBwCW44TBgaeCgohH+gnlt2B+vIiRIHdTGHkDXnJRsPxF84ibz8ii2ow2eJ2gQNrfOpTghTUDZGH/wekEQld3t3hF6hszUD/KaNQRqCkxWpst+wVF5My3ARVgqnKfWBn/aV9lST/FRzgXY5NoEB+nT5BLp+N+bNPMGKdd8IpFDmchiyEm9hcrlLhFkgG7KkYOu8EXOI+fGxGrCaUtBi9BlgHmray7yrsP" ] } }, "data": "[\"edwards25519sha512batch\",\"BHNf0LYf58PG3gN2AbD/4oAf3x3QBj0igW/zXczy67s=\",null]", "_notBeforeHeight": 0 } }, "invites": { "z2Drjgb5nEjLyuHtZrGSyfwzdsQgk8Go2fSx6UpHSmTeGx7dZSx": { "status": "valid", "initialQuantity": 60, "quantity": 60, "expires": 1723175224277, "responses": [] } } }, "payments": {}, "paymentsByPeriod": { "2024-06-13T00:00:00.000Z": { "start": "2024-06-13T00:00:00.000Z", "end": "2024-07-13T00:00:00.000Z", "initialCurrency": "USD", "mincomeExchangeRate": 1, "paymentsFrom": {}, "lastAdjustedDistribution": null, "haveNeedsSnapshot": null } }, "thankYousFrom": {}, "invites": { "z2Drjgb5nEjLyuHtZrGSyfwzdsQgk8Go2fSx6UpHSmTeGx7dZSx": { "creatorID": "invite-initial-creator", "inviteKeyId": "z2Drjgb5nEjLyuHtZrGSyfwzdsQgk8Go2fSx6UpHSmTeGx7dZSx" } }, "proposals": {}, "settings": { "distributionPeriodLength": 2592000000, "inviteExpiryOnboarding": 30, "inviteExpiryProposal": 7, "allowPublicChannels": false, "groupName": "Turtles", "groupPicture": { "manifestCid": "z9brRu3VHUhFdj3CHx1puu8G1pxoTNH4R2tTzweoLML6CC2B93d1", "downloadParams": { "IKM": "X5XKIb+bnM1gmJm9Mz/a972fPNJUYcCFon31YuC9Fx9s", "rs": 65536 } }, "sharedValues": "", "mincomeAmount": 1000, "mincomeCurrency": "USD", "distributionDate": "2024-07-13T00:00:00.000Z", "minimizeDistribution": true, "proposals": { "group-setting-change": { "rule": "percentage", "expires_ms": 1209600000, "ruleSettings": { "percentage": { "threshold": 0.66 }, "disagreement": { "threshold": 1 } } }, "invite-member": { "rule": "percentage", "expires_ms": 1209600000, "ruleSettings": { "percentage": { "threshold": 0.66 }, "disagreement": { "threshold": 1 } } }, "remove-member": { "rule": "percentage", "expires_ms": 1209600000, "ruleSettings": { "percentage": { "threshold": 0.66 }, "disagreement": { "threshold": 1 } } }, "proposal-setting-change": { "rule": "percentage", "expires_ms": 1209600000, "ruleSettings": { "percentage": { "threshold": 0.66 }, "disagreement": { "threshold": 1 } } }, "generic": { "rule": "percentage", "expires_ms": 1209600000, "ruleSettings": { "percentage": { "threshold": 0.66 }, "disagreement": { "threshold": 1 } } } } }, "streaks": { "lastStreakPeriod": null, "fullMonthlyPledges": 0, "fullMonthlySupport": 0, "onTimePayments": {}, "missedPayments": {}, "noVotes": {} }, "profiles": {}, "chatRooms": { "z9brRu3VKL6XW6WyvKbrN76kEuEdyMUTPENEcG5dFyWrQPg1TpNy": { "creatorID": "z9brRu3VMMtq9f1etT3F3cTpuHk52DDQqEGx6o3QgCv8CuqahtNx", "name": "general", "description": "", "type": "group", "privacyLevel": "group", "deletedDate": null, "members": {} } }, "totalPledgeAmount": 0, "groupOwnerID": "z9brRu3VQbMDrRPtJrVABYn3w1LhFZSFKKFYGSmq6DLhxBQrCJ7D", "_volatile": { "watch": [ [ "csk", "z9brRu3VKL6XW6WyvKbrN76kEuEdyMUTPENEcG5dFyWrQPg1TpNy" ], [ "cek", "z9brRu3VKL6XW6WyvKbrN76kEuEdyMUTPENEcG5dFyWrQPg1TpNy" ] ] }, "generalChatRoomId": "z9brRu3VKL6XW6WyvKbrN76kEuEdyMUTPENEcG5dFyWrQPg1TpNy" }, "z9brRu3VKL6XW6WyvKbrN76kEuEdyMUTPENEcG5dFyWrQPg1TpNy": { "_vm": { "type": "gi.contracts/chatroom", "authorizedKeys": { "z2DrjgbDbpwkmQ5pbqVnxz4bmdhDADxLUmafAWtF8582g5v7ND3": { "id": "z2DrjgbDbpwkmQ5pbqVnxz4bmdhDADxLUmafAWtF8582g5v7ND3", "name": "csk", "purpose": [ "sig" ], "ringLevel": 0, "permissions": "*", "allowedActions": "*", "foreignKey": "sp:z9brRu3VMMtq9f1etT3F3cTpuHk52DDQqEGx6o3QgCv8CuqahtNx?keyName=csk", "data": "[\"edwards25519sha512batch\",\"Tv1x2JqGhbNbAQhKv/fs32AdAmKHgdM4yu3OCnWq7F8=\",null]", "_notBeforeHeight": 0 }, "z2DrjgbH6kaqLmkVHiBm8HaTa3urJQowCN4xPTrzB2dzR3FMjR3": { "id": "z2DrjgbH6kaqLmkVHiBm8HaTa3urJQowCN4xPTrzB2dzR3FMjR3", "name": "cek", "purpose": [ "enc" ], "ringLevel": 0, "permissions": [ "ae" ], "allowedActions": "*", "foreignKey": "sp:z9brRu3VMMtq9f1etT3F3cTpuHk52DDQqEGx6o3QgCv8CuqahtNx?keyName=cek", "data": "[\"curve25519xsalsa20poly1305\",\"90PzFum7f0vko9aNwIWNLhW2gnNkUiunzP/JMmoUlXU=\",null]", "_notBeforeHeight": 0 }, "z2Drjgb9gBauWPJ63mBChi6KjtvSHtY4YHZ4jQf9mdQhECQaXYH": { "id": "z2Drjgb9gBauWPJ63mBChi6KjtvSHtY4YHZ4jQf9mdQhECQaXYH", "name": "#sak", "purpose": [ "sak" ], "ringLevel": 0, "permissions": [], "allowedActions": [], "meta": { "private": { "content": [ "z2DrjgbH6kaqLmkVHiBm8HaTa3urJQowCN4xPTrzB2dzR3FMjR3", "R1WRIkKSnuXm9FZqx1YEsYFzYWOU5GQ2/sTHunDYNkH8MARSZxyyI4l0Z9AUDknfVe538A0KGoGGzFPjZcvRVbcIOFM8NWTKpkiuoLPADWYZW2I3Ab+wyyEGPgEkdua9/0mK8ZI0uN5IAVLZoTik7TJQm5/ymcHTyG9Wo7M1r+iapKVwMzVygckVWf9vWl8yX/r9UXOs2h1HExxAhJSih40wtarazA3yV8H68Vj4aCqOrzDUWUtujGzoJHcfx1IEXkCA76UL4Z3u" ] } }, "data": "[\"edwards25519sha512batch\",\"N+LLoHA083ojTQlIYakVvmKnOIQ3ANFoIbCBwk8PeDw=\",null]", "_notBeforeHeight": 0 } }, "pendingWatch": { "z9brRu3VMMtq9f1etT3F3cTpuHk52DDQqEGx6o3QgCv8CuqahtNx": [] } }, "settings": { "actionsPerPage": 40, "maxNameLength": 50, "maxDescriptionLength": 280 }, "attributes": { "deletedDate": null, "name": "general", "type": "group", "description": "", "privacyLevel": "group", "creatorID": "z9brRu3VQbMDrRPtJrVABYn3w1LhFZSFKKFYGSmq6DLhxBQrCJ7D" }, "members": {}, "messages": [], "pinnedMessages": [] } } ```

And chelonia/rootState:

```json { "contracts": { "z9brRu3VQbMDrRPtJrVABYn3w1LhFZSFKKFYGSmq6DLhxBQrCJ7D": { "references": 1, "type": "gi.contracts/identity", "HEAD": "z9brRu3VXPh9W8nYYGLKtYuaH1Vh5jED4K9kHhQq9K3UkyRsEfz9", "height": 2 }, "z9brRu3VMMtq9f1etT3F3cTpuHk52DDQqEGx6o3QgCv8CuqahtNx": { "type": "gi.contracts/group", "HEAD": "z9brRu3VFFwroEGWwfFiRyfqYggRzH7UphM5LnBZGbYCyku2pf9a", "height": 2 }, "z9brRu3VKL6XW6WyvKbrN76kEuEdyMUTPENEcG5dFyWrQPg1TpNy": { "type": "gi.contracts/chatroom", "HEAD": "z9brRu3VLB15rRBz9ocAdnqn2mUE3NLUB4fjwranqcgHvrKHQbeb", "height": 1 } }, "loggedIn": { "identityContractID": "z9brRu3VQbMDrRPtJrVABYn3w1LhFZSFKKFYGSmq6DLhxBQrCJ7D" }, "secretKeys": { "z2Drjgb5jrS6KEe15C9NJawurd8UpxaVJv15jzXXvZUXfDoAGGX": "[\"edwards25519sha512batch\",null,\"OTKji3msIs8lIKrtXfIMVqhHUinvLLDjCQJNetOgucpeEf6zKPT4zbJl2J2E1Va77LrO+4UMmRPtwsLs56jN2A==\"]", "z2DrjgbLJbU7LdHF8wALpD6c12Ee8rkA1Tx9rSzApHFar6m8ivd": "[\"curve25519xsalsa20poly1305\",null,\"BIZOL2d2AfZA+CzauZbaP1iy2CAmCRBoIbZprehQhaA=\"]", "z2DrjgbG6yWJhZytibd5CMcJwsxqLYSVXwrSW56W1x3kmRQ4iTs": "[\"curve25519xsalsa20poly1305\",null,\"L+7c43tRrTVqgQH9JlA307lsZ6Eg7IEuN+JQtdB0DjI=\"]", "z2Drjgb8UUfRRd4tZ5RAZBbqPR5K7eoixC4e6myHkb4sxEXW8oF": "[\"edwards25519sha512batch\",null,\"KRKt9QMyrnDHhd0Lpq/qp6GRB3UZAt/KQe9lY9Rx4QvfdSIztapXZGr01UVOTBIKQ+J0ahqHdnjKwJsYRQ612g==\"]", "z2DrjgbDbpwkmQ5pbqVnxz4bmdhDADxLUmafAWtF8582g5v7ND3": "[\"edwards25519sha512batch\",null,\"ijpJecTVLW6o1VKdNBk3VY0SrzBaD/B/KUi25iOj9vBO/XHYmoaFs1sBCEq/9+zfYB0CYoeB0zjK7c4KdarsXw==\"]", "z2DrjgbH6kaqLmkVHiBm8HaTa3urJQowCN4xPTrzB2dzR3FMjR3": "[\"curve25519xsalsa20poly1305\",null,\"SIEp/0vqIr48+/lKzzgWG1QdsyznlBOYwsoNIjuwjIA=\"]", "z2Drjgb5nEjLyuHtZrGSyfwzdsQgk8Go2fSx6UpHSmTeGx7dZSx": "[\"edwards25519sha512batch\",null,\"JN2c27jv+U1PIMczBrtIfEthYhkFJ282gHsE0MSIpw2hJvF8188soOXl3mbh1JnhRGFbQe2vydU6ZbE2Kr4CbA==\"]", "z2DrjgbGUMW55HQ2wYV9dtvU5ofdfiCMqTJAu2yNnZjRw5R8H2w": "[\"edwards25519sha512batch\",null,\"BbTokv8irp/G67OBb/FNRPdarOFtYW4/fOkukvpqgPYEc1/Qth/nw8beA3YBsP/igB/fHdAGPSKBb/NdzPLruw==\"]", "z2Drjgb9gBauWPJ63mBChi6KjtvSHtY4YHZ4jQf9mdQhECQaXYH": "[\"edwards25519sha512batch\",null,\"Qv4GgPiGD4iS8OWXa+GctSzVD+SJGWyfhW91yCBHAgY34sugcDTzeiNNCUhhqRW+Yqc4hDcA0WghsIHCTw94PA==\"]" }, "z9brRu3VQbMDrRPtJrVABYn3w1LhFZSFKKFYGSmq6DLhxBQrCJ7D": { "_vm": { "type": "gi.contracts/identity", "authorizedKeys": { "z2DrjgbGEsC9gBEGdB3N2Xyvt43jzPo1MrMsQbzHztgvVzimUbF": { "id": "z2DrjgbGEsC9gBEGdB3N2Xyvt43jzPo1MrMsQbzHztgvVzimUbF", "name": "ipk", "purpose": [ "sig" ], "ringLevel": 0, "permissions": "*", "allowedActions": "*", "meta": { "private": { "transient": true } }, "data": "[\"edwards25519sha512batch\",\"6EJ0H6Ag9ZE4sCpfImAqyiHzE824JEBvNvBws6EugeE=\",null]", "_notBeforeHeight": 0 }, "z2DrjgbCJjbUsWAhUdP6GUjN1NR1X6jDxbm38haQchWbo7PFu8L": { "id": "z2DrjgbCJjbUsWAhUdP6GUjN1NR1X6jDxbm38haQchWbo7PFu8L", "name": "iek", "purpose": [ "enc" ], "ringLevel": 0, "permissions": [ "gi.contracts/identity/keymeta" ], "meta": { "private": { "transient": true } }, "data": "[\"curve25519xsalsa20poly1305\",\"IDmEn6SJHcogduQwthmd3vHGGlttkwE17O3cwtSg1ic=\",null]", "_notBeforeHeight": 0 }, "z2Drjgb5jrS6KEe15C9NJawurd8UpxaVJv15jzXXvZUXfDoAGGX": { "id": "z2Drjgb5jrS6KEe15C9NJawurd8UpxaVJv15jzXXvZUXfDoAGGX", "name": "csk", "purpose": [ "sig" ], "ringLevel": 1, "permissions": [ "ka", "kd", "au", "ae", "a", "ca", "cd", "ks", "ku", "ae#inner" ], "allowedActions": "*", "meta": { "private": { "content": [ "z2DrjgbCJjbUsWAhUdP6GUjN1NR1X6jDxbm38haQchWbo7PFu8L", "2IhBh3vIKr64WSiryDjojZyDVdpc7UXzSYfOg2Y5KjuSFbLzXXwiXTNKv6SK1ZiIqLBDtXmAA3DKegajk0DvqiXHEZzXxAFvgQqRhHrCAi13bTsAyT9tNBieB1Ip010ql/BYhFgM745CNePuf3Zs3lt9hAkA/i8Q54BcDgpMUXli9trPXbDRbMB1ytDCFdps9K5FfAmB15koTAAZsEr3SmY1Cni1sUbCVTGpWjqJekU7RAGzFkUXtvqBgjJOm5Xypgqo7SKOeizS" ] } }, "data": "[\"edwards25519sha512batch\",\"XhH+syj0+M2yZdidhNVWu+y6zvuFDJkT7cLC7Oeozdg=\",null]", "_notBeforeHeight": 0 }, "z2DrjgbLJbU7LdHF8wALpD6c12Ee8rkA1Tx9rSzApHFar6m8ivd": { "id": "z2DrjgbLJbU7LdHF8wALpD6c12Ee8rkA1Tx9rSzApHFar6m8ivd", "name": "cek", "purpose": [ "enc" ], "ringLevel": 1, "permissions": [ "ae", "ka", "kd", "kr", "krs", "ks", "ku" ], "allowedActions": "*", "meta": { "private": { "content": [ "z2DrjgbCJjbUsWAhUdP6GUjN1NR1X6jDxbm38haQchWbo7PFu8L", "dzikBJkoabz4bdJQmencIX5TH6YsLTociVFyiviWUyvERh4nMBRtoMxNniPTRLOUvD3rwQVSTTOoiE/gcC2MLBot3knkWBu6l1/+BQFEAB7c1tjvPECDZLRVJqVC9rB+URjxFy1ZAwza8o4JAEOITUuVuQnifDvk/FY4Mf66ISCsLHi/YDXk3tID03vjYwydKgVs8j8LnxT+R47b5g84qw==" ] } }, "data": "[\"curve25519xsalsa20poly1305\",\"kq82tI/2EE/tgq/dWAvX1NCapFsELOxfjcMCJMsq1Wc=\",null]", "_notBeforeHeight": 0 }, "z2DrjgbG6yWJhZytibd5CMcJwsxqLYSVXwrSW56W1x3kmRQ4iTs": { "id": "z2DrjgbG6yWJhZytibd5CMcJwsxqLYSVXwrSW56W1x3kmRQ4iTs", "name": "pek", "purpose": [ "enc" ], "ringLevel": 2, "permissions": [ "ae" ], "allowedActions": [ "gi.actions/identity/setAttributes" ], "meta": { "private": { "content": [ "z2DrjgbLJbU7LdHF8wALpD6c12Ee8rkA1Tx9rSzApHFar6m8ivd", "icc8+ohkCCXZLFDmXGMy89Yg2fIibYIjzELACypFeiHXSPlI0ZLTxMuH4sHkZaNuRkMO6RdO1tonLwu8lLeOzeW0PtNRFCgx1m9cihE1Bj3eDq27euPnGf2clH3YTxXfe4n6FHOhzHOM5InPoJdBd2BV8KIC0fFjrKvmu5E4WW3d6pQDTD29v0m959Sn9IkL6D6tzztX0dopfR/iQIVuaQ==" ] } }, "data": "[\"curve25519xsalsa20poly1305\",\"Fh8IIwyYJJAtB053luS2crHnp2UX9AZC+g70t7tyBR4=\",null]", "_notBeforeHeight": 0 }, "z2Drjgb8UUfRRd4tZ5RAZBbqPR5K7eoixC4e6myHkb4sxEXW8oF": { "id": "z2Drjgb8UUfRRd4tZ5RAZBbqPR5K7eoixC4e6myHkb4sxEXW8oF", "name": "#sak", "purpose": [ "sak" ], "ringLevel": 0, "permissions": [], "allowedActions": [], "meta": { "private": { "content": [ "z2DrjgbCJjbUsWAhUdP6GUjN1NR1X6jDxbm38haQchWbo7PFu8L", "URNcJygHymx+FpYh6dSZAoPEjsjDLWvpbMO8tV4lw2I9N+PVUudzovyCMnNjjWlBnAjOwknLsOOBLYSPo7nD9wVUJVI5SlnKXQ5qxwEQQWnnSGvk/Njglj4GXoramhdMW36iFcGfDscMt/0xlUi+vR5Hsx9DiuNIt+5GKCM66afDjbnUNXRoIjDUzd3R+6sm4GiCmmHlgkAsZOO/8fbKcal356q3jdZtBt8HYgex0NE0fKX9I20e6qTMaMnPKZqB90C+IdV7v3Dm" ] } }, "data": "[\"edwards25519sha512batch\",\"33UiM7WqV2Rq9NVFTkwSCkPidGoah3Z4ysCbGEUOtdo=\",null]", "_notBeforeHeight": 0 } } }, "settings": {}, "attributes": { "username": "u1", "email": "u1@asdf.com", "picture": { "manifestCid": "z9brRu3VSLAW8c3m7Fcij1qobZso6SacKFQQsPd6YcJzU1dL2h75", "downloadParams": { "IKM": "33EMHicV/PDiyuqJZSES31l74CIn6D35guscVY0tNuZg", "rs": 65536 } } }, "chatRooms": {}, "groups": { "z9brRu3VMMtq9f1etT3F3cTpuHk52DDQqEGx6o3QgCv8CuqahtNx": { "hash": "z9brRu3VXPh9W8nYYGLKtYuaH1Vh5jED4K9kHhQq9K3UkyRsEfz9", "inviteSecretId": "z2DrjgbDbpwkmQ5pbqVnxz4bmdhDADxLUmafAWtF8582g5v7ND3" } }, "fileDeleteTokens": {} }, "contractSigningKeys": { "name:gi.contracts/chatroom": { "z2DrjgbCDg34SaBhFjNEF45AVodCUu7QwcFBksz3BDgN4BekrdN": "[\"edwards25519sha512batch\",\"IjAFp6gIzHW2HOIXXS9b4A3EKf8t9NNa5nndHcROiDk=\",null]" }, "name:gi.contracts/group": { "z2DrjgbCDg34SaBhFjNEF45AVodCUu7QwcFBksz3BDgN4BekrdN": "[\"edwards25519sha512batch\",\"IjAFp6gIzHW2HOIXXS9b4A3EKf8t9NNa5nndHcROiDk=\",null]" }, "name:gi.contracts/identity": { "z2DrjgbCDg34SaBhFjNEF45AVodCUu7QwcFBksz3BDgN4BekrdN": "[\"edwards25519sha512batch\",\"IjAFp6gIzHW2HOIXXS9b4A3EKf8t9NNa5nndHcROiDk=\",null]" } }, "z9brRu3VMMtq9f1etT3F3cTpuHk52DDQqEGx6o3QgCv8CuqahtNx": { "_vm": { "type": "gi.contracts/group", "authorizedKeys": { "z2DrjgbDbpwkmQ5pbqVnxz4bmdhDADxLUmafAWtF8582g5v7ND3": { "id": "z2DrjgbDbpwkmQ5pbqVnxz4bmdhDADxLUmafAWtF8582g5v7ND3", "name": "csk", "purpose": [ "sig" ], "ringLevel": 1, "permissions": "*", "allowedActions": "*", "meta": { "private": { "content": [ "z2DrjgbH6kaqLmkVHiBm8HaTa3urJQowCN4xPTrzB2dzR3FMjR3", "iwZ78Ls4doV6ls6vK7/qgm31F9kNwKzc+aRUbxC2oFHXIqGEOcpqxHstxtm/lTAIYhR8VtC40eDHgpW8nSdDoINRXJ7Lt7WIeGJyIAZj5GHRt8T944tLzl+PCvbWomKN9u0B44OU7yNIfMe43EER9CRYtEF62xVS71zfrjOO8W5ELTJY3ItI0Xe6f5LE2LQJGtYPctQCes/GTDwClhs43k9hvJF/NYaJb+WvahvC2PloZmbB+RXY8pL80QiXr0UFvj3fcTZdofoY" ], "shareable": true } }, "data": "[\"edwards25519sha512batch\",\"Tv1x2JqGhbNbAQhKv/fs32AdAmKHgdM4yu3OCnWq7F8=\",null]", "_notBeforeHeight": 0 }, "z2DrjgbH6kaqLmkVHiBm8HaTa3urJQowCN4xPTrzB2dzR3FMjR3": { "id": "z2DrjgbH6kaqLmkVHiBm8HaTa3urJQowCN4xPTrzB2dzR3FMjR3", "name": "cek", "purpose": [ "enc" ], "ringLevel": 1, "permissions": "*", "allowedActions": "*", "meta": { "private": { "content": [ "z2DrjgbH6kaqLmkVHiBm8HaTa3urJQowCN4xPTrzB2dzR3FMjR3", "/n3kC+vv2nCmx4kbEI4hZSvLef11SrRQW480CXTD0ju3YKrcp0qzAUy1wsXbupHj7matTiTOZJrsAWGr6oHUxWzuq6GrGSceCAt5dgE6+1jBLlnPNNUfy4FK2liCCmy4McnU7aMMwF4HaspD0vAUBFMHkFbYZaFSGBSewXtOMOHKyIlXoZ1zjXVT1SRJn43gp77j4AVxBx67C+PxPy9PhQ==" ], "shareable": true } }, "data": "[\"curve25519xsalsa20poly1305\",\"90PzFum7f0vko9aNwIWNLhW2gnNkUiunzP/JMmoUlXU=\",null]", "_notBeforeHeight": 0 }, "z2Drjgb5nEjLyuHtZrGSyfwzdsQgk8Go2fSx6UpHSmTeGx7dZSx": { "id": "z2Drjgb5nEjLyuHtZrGSyfwzdsQgk8Go2fSx6UpHSmTeGx7dZSx", "name": "#inviteKey-z2Drjgb5nEjLyuHtZrGSyfwzdsQgk8Go2fSx6UpHSmTeGx7dZSx", "purpose": [ "sig" ], "ringLevel": 9007199254740991, "permissions": [ "kr" ], "meta": { "quantity": 60, "expires": 1723175224277, "private": { "content": [ "z2DrjgbH6kaqLmkVHiBm8HaTa3urJQowCN4xPTrzB2dzR3FMjR3", "E9+R6jAxSyeUyJN2otkXM0z2am/FYxsoKFtfRu6YQzN5bVPVjn6CA+uF3ewYfdK0op4ireVGQ11OAg8nB0kPTt+cmkhmIBNwQvvE+XXBLkD1dSc7lgW+s+z6qHEt2jOKsvaZQBJcwbFbbThMOij+3ifVIA4sKp4Rnsu/6MfulzNuZeDCl45o3FetVr0p99STY4chBxD3ZRMWM/2NTbDKtppUCd4dUodEkTgeCgqbdDA6SMjCMRsFpUVl6rpTy3NNxEZ4crntFw6K" ] } }, "data": "[\"edwards25519sha512batch\",\"oSbxfNfPLKDl5d5m4dSZ4URhW0Htr8nVOmWxNiq+Amw=\",null]", "_notBeforeHeight": 0 }, "z2DrjgbGUMW55HQ2wYV9dtvU5ofdfiCMqTJAu2yNnZjRw5R8H2w": { "id": "z2DrjgbGUMW55HQ2wYV9dtvU5ofdfiCMqTJAu2yNnZjRw5R8H2w", "name": "#sak", "purpose": [ "sak" ], "ringLevel": 0, "permissions": [], "allowedActions": [], "meta": { "private": { "content": [ "z2DrjgbH6kaqLmkVHiBm8HaTa3urJQowCN4xPTrzB2dzR3FMjR3", "i2U6EUlJViIfl5Uqlp6iP5tULaRtz63/aiRzqDlDcyJtBwCW44TBgaeCgohH+gnlt2B+vIiRIHdTGHkDXnJRsPxF84ibz8ii2ow2eJ2gQNrfOpTghTUDZGH/wekEQld3t3hF6hszUD/KaNQRqCkxWpst+wVF5My3ARVgqnKfWBn/aV9lST/FRzgXY5NoEB+nT5BLp+N+bNPMGKdd8IpFDmchiyEm9hcrlLhFkgG7KkYOu8EXOI+fGxGrCaUtBi9BlgHmray7yrsP" ] } }, "data": "[\"edwards25519sha512batch\",\"BHNf0LYf58PG3gN2AbD/4oAf3x3QBj0igW/zXczy67s=\",null]", "_notBeforeHeight": 0 } }, "invites": { "z2Drjgb5nEjLyuHtZrGSyfwzdsQgk8Go2fSx6UpHSmTeGx7dZSx": { "status": "valid", "initialQuantity": 60, "quantity": 60, "expires": 1723175224277, "responses": [] } } }, "payments": {}, "paymentsByPeriod": { "2024-06-13T00:00:00.000Z": { "start": "2024-06-13T00:00:00.000Z", "end": "2024-07-13T00:00:00.000Z", "initialCurrency": "USD", "mincomeExchangeRate": 1, "paymentsFrom": {}, "lastAdjustedDistribution": null, "haveNeedsSnapshot": null } }, "thankYousFrom": {}, "invites": { "z2Drjgb5nEjLyuHtZrGSyfwzdsQgk8Go2fSx6UpHSmTeGx7dZSx": { "creatorID": "invite-initial-creator", "inviteKeyId": "z2Drjgb5nEjLyuHtZrGSyfwzdsQgk8Go2fSx6UpHSmTeGx7dZSx" } }, "proposals": {}, "settings": { "distributionPeriodLength": 2592000000, "inviteExpiryOnboarding": 30, "inviteExpiryProposal": 7, "allowPublicChannels": false, "groupName": "Turtles", "groupPicture": { "manifestCid": "z9brRu3VHUhFdj3CHx1puu8G1pxoTNH4R2tTzweoLML6CC2B93d1", "downloadParams": { "IKM": "X5XKIb+bnM1gmJm9Mz/a972fPNJUYcCFon31YuC9Fx9s", "rs": 65536 } }, "sharedValues": "", "mincomeAmount": 1000, "mincomeCurrency": "USD", "distributionDate": "2024-07-13T00:00:00.000Z", "minimizeDistribution": true, "proposals": { "group-setting-change": { "rule": "percentage", "expires_ms": 1209600000, "ruleSettings": { "percentage": { "threshold": 0.66 }, "disagreement": { "threshold": 1 } } }, "invite-member": { "rule": "percentage", "expires_ms": 1209600000, "ruleSettings": { "percentage": { "threshold": 0.66 }, "disagreement": { "threshold": 1 } } }, "remove-member": { "rule": "percentage", "expires_ms": 1209600000, "ruleSettings": { "percentage": { "threshold": 0.66 }, "disagreement": { "threshold": 1 } } }, "proposal-setting-change": { "rule": "percentage", "expires_ms": 1209600000, "ruleSettings": { "percentage": { "threshold": 0.66 }, "disagreement": { "threshold": 1 } } }, "generic": { "rule": "percentage", "expires_ms": 1209600000, "ruleSettings": { "percentage": { "threshold": 0.66 }, "disagreement": { "threshold": 1 } } } } }, "streaks": { "lastStreakPeriod": null, "fullMonthlyPledges": 0, "fullMonthlySupport": 0, "onTimePayments": {}, "missedPayments": {}, "noVotes": {} }, "profiles": {}, "chatRooms": { "z9brRu3VKL6XW6WyvKbrN76kEuEdyMUTPENEcG5dFyWrQPg1TpNy": { "creatorID": "z9brRu3VMMtq9f1etT3F3cTpuHk52DDQqEGx6o3QgCv8CuqahtNx", "name": "general", "description": "", "type": "group", "privacyLevel": "group", "deletedDate": null, "members": {} } }, "totalPledgeAmount": 0, "groupOwnerID": "z9brRu3VQbMDrRPtJrVABYn3w1LhFZSFKKFYGSmq6DLhxBQrCJ7D", "_volatile": { "watch": [ [ "csk", "z9brRu3VKL6XW6WyvKbrN76kEuEdyMUTPENEcG5dFyWrQPg1TpNy" ], [ "cek", "z9brRu3VKL6XW6WyvKbrN76kEuEdyMUTPENEcG5dFyWrQPg1TpNy" ] ] }, "generalChatRoomId": "z9brRu3VKL6XW6WyvKbrN76kEuEdyMUTPENEcG5dFyWrQPg1TpNy" }, "z9brRu3VKL6XW6WyvKbrN76kEuEdyMUTPENEcG5dFyWrQPg1TpNy": { "_vm": { "type": "gi.contracts/chatroom", "authorizedKeys": { "z2DrjgbDbpwkmQ5pbqVnxz4bmdhDADxLUmafAWtF8582g5v7ND3": { "id": "z2DrjgbDbpwkmQ5pbqVnxz4bmdhDADxLUmafAWtF8582g5v7ND3", "name": "csk", "purpose": [ "sig" ], "ringLevel": 0, "permissions": "*", "allowedActions": "*", "foreignKey": "sp:z9brRu3VMMtq9f1etT3F3cTpuHk52DDQqEGx6o3QgCv8CuqahtNx?keyName=csk", "data": "[\"edwards25519sha512batch\",\"Tv1x2JqGhbNbAQhKv/fs32AdAmKHgdM4yu3OCnWq7F8=\",null]", "_notBeforeHeight": 0 }, "z2DrjgbH6kaqLmkVHiBm8HaTa3urJQowCN4xPTrzB2dzR3FMjR3": { "id": "z2DrjgbH6kaqLmkVHiBm8HaTa3urJQowCN4xPTrzB2dzR3FMjR3", "name": "cek", "purpose": [ "enc" ], "ringLevel": 0, "permissions": [ "ae" ], "allowedActions": "*", "foreignKey": "sp:z9brRu3VMMtq9f1etT3F3cTpuHk52DDQqEGx6o3QgCv8CuqahtNx?keyName=cek", "data": "[\"curve25519xsalsa20poly1305\",\"90PzFum7f0vko9aNwIWNLhW2gnNkUiunzP/JMmoUlXU=\",null]", "_notBeforeHeight": 0 }, "z2Drjgb9gBauWPJ63mBChi6KjtvSHtY4YHZ4jQf9mdQhECQaXYH": { "id": "z2Drjgb9gBauWPJ63mBChi6KjtvSHtY4YHZ4jQf9mdQhECQaXYH", "name": "#sak", "purpose": [ "sak" ], "ringLevel": 0, "permissions": [], "allowedActions": [], "meta": { "private": { "content": [ "z2DrjgbH6kaqLmkVHiBm8HaTa3urJQowCN4xPTrzB2dzR3FMjR3", "R1WRIkKSnuXm9FZqx1YEsYFzYWOU5GQ2/sTHunDYNkH8MARSZxyyI4l0Z9AUDknfVe538A0KGoGGzFPjZcvRVbcIOFM8NWTKpkiuoLPADWYZW2I3Ab+wyyEGPgEkdua9/0mK8ZI0uN5IAVLZoTik7TJQm5/ymcHTyG9Wo7M1r+iapKVwMzVygckVWf9vWl8yX/r9UXOs2h1HExxAhJSih40wtarazA3yV8H68Vj4aCqOrzDUWUtujGzoJHcfx1IEXkCA76UL4Z3u" ] } }, "data": "[\"edwards25519sha512batch\",\"N+LLoHA083ojTQlIYakVvmKnOIQ3ANFoIbCBwk8PeDw=\",null]", "_notBeforeHeight": 0 } }, "pendingWatch": { "z9brRu3VMMtq9f1etT3F3cTpuHk52DDQqEGx6o3QgCv8CuqahtNx": [] } }, "settings": { "actionsPerPage": 40, "maxNameLength": 50, "maxDescriptionLength": 280 }, "attributes": { "deletedDate": null, "name": "general", "type": "group", "description": "", "privacyLevel": "group", "creatorID": "z9brRu3VQbMDrRPtJrVABYn3w1LhFZSFKKFYGSmq6DLhxBQrCJ7D" }, "members": {}, "messages": [], "pinnedMessages": [] } } ```

Here is the diff:

--- (clipboard)
+++ {
@@ -1,4 +1,5 @@
 {
+  "currentGroupId": "z9brRu3VMMtq9f1etT3F3cTpuHk52DDQqEGx6o3QgCv8CuqahtNx",
   "contracts": {
     "z9brRu3VQbMDrRPtJrVABYn3w1LhFZSFKKFYGSmq6DLhxBQrCJ7D": {
       "references": 1,
@@ -18,18 +19,50 @@
     }
   },
   "loggedIn": {
-    "identityContractID": "z9brRu3VQbMDrRPtJrVABYn3w1LhFZSFKKFYGSmq6DLhxBQrCJ7D"
-  },
-  "secretKeys": {
-    "z2Drjgb5jrS6KEe15C9NJawurd8UpxaVJv15jzXXvZUXfDoAGGX": "[\"edwards25519sha512batch\",null,\"OTKji3msIs8lIKrtXfIMVqhHUinvLLDjCQJNetOgucpeEf6zKPT4zbJl2J2E1Va77LrO+4UMmRPtwsLs56jN2A==\"]",
-    "z2DrjgbLJbU7LdHF8wALpD6c12Ee8rkA1Tx9rSzApHFar6m8ivd": "[\"curve25519xsalsa20poly1305\",null,\"BIZOL2d2AfZA+CzauZbaP1iy2CAmCRBoIbZprehQhaA=\"]",
-    "z2DrjgbG6yWJhZytibd5CMcJwsxqLYSVXwrSW56W1x3kmRQ4iTs": "[\"curve25519xsalsa20poly1305\",null,\"L+7c43tRrTVqgQH9JlA307lsZ6Eg7IEuN+JQtdB0DjI=\"]",
-    "z2Drjgb8UUfRRd4tZ5RAZBbqPR5K7eoixC4e6myHkb4sxEXW8oF": "[\"edwards25519sha512batch\",null,\"KRKt9QMyrnDHhd0Lpq/qp6GRB3UZAt/KQe9lY9Rx4QvfdSIztapXZGr01UVOTBIKQ+J0ahqHdnjKwJsYRQ612g==\"]",
-    "z2DrjgbDbpwkmQ5pbqVnxz4bmdhDADxLUmafAWtF8582g5v7ND3": "[\"edwards25519sha512batch\",null,\"ijpJecTVLW6o1VKdNBk3VY0SrzBaD/B/KUi25iOj9vBO/XHYmoaFs1sBCEq/9+zfYB0CYoeB0zjK7c4KdarsXw==\"]",
-    "z2DrjgbH6kaqLmkVHiBm8HaTa3urJQowCN4xPTrzB2dzR3FMjR3": "[\"curve25519xsalsa20poly1305\",null,\"SIEp/0vqIr48+/lKzzgWG1QdsyznlBOYwsoNIjuwjIA=\"]",
-    "z2Drjgb5nEjLyuHtZrGSyfwzdsQgk8Go2fSx6UpHSmTeGx7dZSx": "[\"edwards25519sha512batch\",null,\"JN2c27jv+U1PIMczBrtIfEthYhkFJ282gHsE0MSIpw2hJvF8188soOXl3mbh1JnhRGFbQe2vydU6ZbE2Kr4CbA==\"]",
-    "z2DrjgbGUMW55HQ2wYV9dtvU5ofdfiCMqTJAu2yNnZjRw5R8H2w": "[\"edwards25519sha512batch\",null,\"BbTokv8irp/G67OBb/FNRPdarOFtYW4/fOkukvpqgPYEc1/Qth/nw8beA3YBsP/igB/fHdAGPSKBb/NdzPLruw==\"]",
-    "z2Drjgb9gBauWPJ63mBChi6KjtvSHtY4YHZ4jQf9mdQhECQaXYH": "[\"edwards25519sha512batch\",null,\"Qv4GgPiGD4iS8OWXa+GctSzVD+SJGWyfhW91yCBHAgY34sugcDTzeiNNCUhhqRW+Yqc4hDcA0WghsIHCTw94PA==\"]"
+    "identityContractID": "z9brRu3VQbMDrRPtJrVABYn3w1LhFZSFKKFYGSmq6DLhxBQrCJ7D",
+    "encryptionParams": {
+      "stateEncryptionKeyId": "z2DrjgbDJjgEvKdhEWmwJPhfYxUrjFYKLepSbwbT3SriXdWFa7x",
+      "salt": "0DLfjvP9EbZPXbALMNLMHDRy",
+      "encryptedStateEncryptionKey": "QjeE51nhnIRqvpypYGfqna8e9GGpSJXs7VNu7YfQuRd89etRqmVFOpyuGITl5j6V6VdqnRF1YxZtdOEfk6nQSBvNlFqWKgiqb8ySSmMDw/z3zsMFrlqw7iLtkcOmzLlK0YRCp9RmAT8+LJHrYCcmKerniwb0kVujSAi0FrfQ3TKJvDPUp9xEGlF1kmOfv2SCca8PC41SnceUOQ=="
+    }
+  },
+  "namespaceLookups": {
+    "u1": "z9brRu3VQbMDrRPtJrVABYn3w1LhFZSFKKFYGSmq6DLhxBQrCJ7D"
+  },
+  "periodicNotificationAlreadyFiredMap": {},
+  "contractSigningKeys": {},
+  "lastLoggedIn": {},
+  "preferences": {},
+  "notifications": {
+    "items": [],
+    "status": {}
+  },
+  "settings": {
+    "appLogsFilter": [
+      "error",
+      "warn",
+      "info",
+      "debug",
+      "log"
+    ],
+    "fontSize": 16,
+    "increasedContrast": false,
+    "notificationEnabled": true,
+    "reducedMotion": false,
+    "theme": "system",
+    "themeColor": "dark"
+  },
+  "chatroom": {
+    "currentChatRoomIDs": {
+      "z9brRu3VMMtq9f1etT3F3cTpuHk52DDQqEGx6o3QgCv8CuqahtNx": "z9brRu3VKL6XW6WyvKbrN76kEuEdyMUTPENEcG5dFyWrQPg1TpNy"
+    },
+    "pendingChatRoomIDs": {},
+    "chatRoomScrollPosition": {},
+    "unreadMessages": {},
+    "chatNotificationSettings": {}
+  },
+  "idleVue": {
+    "isIdle": false
   },
   "z9brRu3VQbMDrRPtJrVABYn3w1LhFZSFKKFYGSmq6DLhxBQrCJ7D": {
     "_vm": {
@@ -195,17 +228,6 @@
       }
     },
     "fileDeleteTokens": {}
-  },
-  "contractSigningKeys": {
-    "name:gi.contracts/chatroom": {
-      "z2DrjgbCDg34SaBhFjNEF45AVodCUu7QwcFBksz3BDgN4BekrdN": "[\"edwards25519sha512batch\",\"IjAFp6gIzHW2HOIXXS9b4A3EKf8t9NNa5nndHcROiDk=\",null]"
-    },
-    "name:gi.contracts/group": {
-      "z2DrjgbCDg34SaBhFjNEF45AVodCUu7QwcFBksz3BDgN4BekrdN": "[\"edwards25519sha512batch\",\"IjAFp6gIzHW2HOIXXS9b4A3EKf8t9NNa5nndHcROiDk=\",null]"
-    },
-    "name:gi.contracts/identity": {
-      "z2DrjgbCDg34SaBhFjNEF45AVodCUu7QwcFBksz3BDgN4BekrdN": "[\"edwards25519sha512batch\",\"IjAFp6gIzHW2HOIXXS9b4A3EKf8t9NNa5nndHcROiDk=\",null]"
-    }
   },
   "z9brRu3VMMtq9f1etT3F3cTpuHk52DDQqEGx6o3QgCv8CuqahtNx": {
     "_vm": {

And here are the console logs:

Solution

Identify the problem and fix.

Refreshing the page should finish the joining process even if the websocket got interrupted.

corrideat commented 2 months ago

Identify the problem and fix.

This is tricker than it sounds. As far as identifying the issue, there's two I can point at.

  1. The bug you pointed to (#1559)
  2. 'Fixing' this would require changing things up in how the app works (the tricky part is that I think this is a slightly involved change and require more or less replicating 'broken sockets' for testing, not that it can't / shouldn't be done). In particular, you shouldn't be able to proceed to create a group under these circumstances.

Refreshing the page should finish the joining process even if the websocket got interrupted.

This is also a tricky change. The joining process can't be finished because the contract events have already been processed (even though they failed) and won't be processed again. I'm not sure it's a good idea to reprocess failed events and also not sure how we could detect which events should be fixed by refreshing the page either. Do you have specific ideas of what should be done?

We can discuss this next time we meet, or feel free to reply here what you envision the solution to be to the last point.

taoeffect commented 2 months ago

I'm not sure it's a good idea to reprocess failed events and also not sure how we could detect which events should be fixed by refreshing the page either. Do you have specific ideas of what should be done?

I agree reprocessing failed events doesn't make sense.

As far as specific ideas, perhaps the app could detect that a join attempt was made that failed, and then resend any actions or events that need to be resent/re-emmitted.

corrideat commented 2 months ago

I suggest proceeding like this:

  1. Try to reproduce reproducibly
  2. Fix the issues in join that cause you to be stuck and proceeding when you shouldn't because processing failed
  3. Later, see how to do this: could detect that a join attempt was made that failed. It sounds like the kind of situation the persistent queue was supposed to solve
taoeffect commented 2 months ago

Sounds good 👍