From 56ead8c934a9878b12b0097c15aa039eb144d6ac Mon Sep 17 00:00:00 2001 From: anitarua Date: Tue, 26 Nov 2024 13:51:56 -0800 Subject: [PATCH 01/13] chore: fix deps and upgrade momento dep in react native demo --- react-native/ModeratedChat/package-lock.json | 971 ++++++++++++++++--- react-native/ModeratedChat/package.json | 4 +- 2 files changed, 854 insertions(+), 121 deletions(-) diff --git a/react-native/ModeratedChat/package-lock.json b/react-native/ModeratedChat/package-lock.json index d700911..f6fbaaa 100644 --- a/react-native/ModeratedChat/package-lock.json +++ b/react-native/ModeratedChat/package-lock.json @@ -8,7 +8,7 @@ "name": "moderatedchat", "version": "1.0.0", "dependencies": { - "@gomomento/sdk-web": "^1.66.0", + "@gomomento/sdk-web": "^1.101.2", "@react-native/metro-config": "^0.73.5", "@types/react": "~18.2.14", "base-64": "^1.0.0", @@ -18,7 +18,7 @@ "expo-image-picker": "~14.3.2", "expo-splash-screen": "~0.20.5", "expo-status-bar": "~1.6.0", - "expo-storage": "^51.0.8", + "expo-storage": "^48.1.0", "expo-system-ui": "^2.9.3", "react": "18.2.0", "react-native": "0.72.10", @@ -3314,40 +3314,40 @@ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" }, "node_modules/@gomomento/generated-types-webtext": { - "version": "0.106.0", - "resolved": "https://registry.npmjs.org/@gomomento/generated-types-webtext/-/generated-types-webtext-0.106.0.tgz", - "integrity": "sha512-b8OqrGuqsRqpbhUS6tnlqZD2dVZO2GRRfp16m7zVOZDbq7pdA8nYwWCT0GxfiqgIcDWPSGzAUoeqEdCp4hs0Sw==", + "version": "0.119.2", + "resolved": "https://registry.npmjs.org/@gomomento/generated-types-webtext/-/generated-types-webtext-0.119.2.tgz", + "integrity": "sha512-Sxq1/JqnVe3IwOEhUTtXLtIoGV8tkAgVrNgHQJRu0F6h+ZZpvTfuB0kW+xq0uRVLSeZfDCQiH3bJsaezLVg+ug==", "dependencies": { "google-protobuf": "3.21.2", "grpc-web": "1.4.2" } }, "node_modules/@gomomento/sdk-core": { - "version": "1.66.0", - "resolved": "https://registry.npmjs.org/@gomomento/sdk-core/-/sdk-core-1.66.0.tgz", - "integrity": "sha512-ZrVAyvc1cF8CC5vd6v4xZToyyg+PgYoZ23MYJaY9dVgrQQ/AxKnZjJc/NTjdYblbup2XgorSXFwQC78AuRoC7Q==", + "version": "1.101.2", + "resolved": "https://registry.npmjs.org/@gomomento/sdk-core/-/sdk-core-1.101.2.tgz", + "integrity": "sha512-lx0rjFe3B+/Qp58w5Nopu1/6WFpQ08D1UfEobw+/0mApxbu5jiPc932S5JzDrnREW+5S3+0IZRFDPugWfZ3pkQ==", "dependencies": { "buffer": "6.0.3", "jwt-decode": "3.1.2" }, "engines": { - "node": ">= 14" + "node": ">= 16" } }, "node_modules/@gomomento/sdk-web": { - "version": "1.66.0", - "resolved": "https://registry.npmjs.org/@gomomento/sdk-web/-/sdk-web-1.66.0.tgz", - "integrity": "sha512-ZuZ+AJhIH+Iw3KFDciZ4Vi0RmQxTdkHN4jD+vP/iqDw+Aee1G+t0tXok1xYWi1fVc7Gft11FE2E2lop8OqZ9Pg==", + "version": "1.101.2", + "resolved": "https://registry.npmjs.org/@gomomento/sdk-web/-/sdk-web-1.101.2.tgz", + "integrity": "sha512-XDWgkhdG1NN9/0/h/Ei7Mb1m5BqmCz7aRxYjP84CmksDerhXi47G0RWPFjfhOl+2w56NQquhW3jt9aRovbuG+A==", "dependencies": { - "@gomomento/generated-types-webtext": "0.106.0", - "@gomomento/sdk-core": "1.66.0", + "@gomomento/generated-types-webtext": "0.119.2", + "@gomomento/sdk-core": "1.101.2", "@types/google-protobuf": "3.15.6", "google-protobuf": "3.21.2", "grpc-web": "1.4.2", "jwt-decode": "3.1.2" }, "engines": { - "node": ">= 14" + "node": ">= 16" } }, "node_modules/@graphql-typed-document-node/core": { @@ -8412,145 +8412,870 @@ "integrity": "sha512-e//Oi2WPdomMlMDD3skE4+1ZarKCJ/suvcB4Jo/nO427niKug5oppcPNYO+csR6y3ZglGuypS+3pp/hJ+Xp6fQ==" }, "node_modules/expo-storage": { - "version": "51.0.8", - "resolved": "https://registry.npmjs.org/expo-storage/-/expo-storage-51.0.8.tgz", - "integrity": "sha512-Mwy2HK5I/XpjteiDsttFjCHVtpJ5K08uDsfv9uNkzz61Wj9iuZSVlhiLYoFjMzUa1m6Ow7kR5R8a37Lt11h9uQ==", - "peerDependencies": { - "expo-file-system": ">=17.0.1", - "react": ">=18.2.0", - "react-native": ">=0.74.3" + "version": "48.1.0", + "resolved": "https://registry.npmjs.org/expo-storage/-/expo-storage-48.1.0.tgz", + "integrity": "sha512-06k67LD0ShlNmPpxYGCdhamdy/kmQWJWXiUxodV61izVXgZnJTCql0NeTD28J9oj0aIAXxTLaxiRBYv6p1hVog==", + "dependencies": { + "expo": "^48.0.0" } }, - "node_modules/expo-system-ui": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-2.9.3.tgz", - "integrity": "sha512-RNFNBLJ9lhnjOGrHhtfDc15Ry/lF+SA4kwulmHzYGqaTeYvsL9q0K0+m9qmxuDdrbKJkuurvzvjVylDNnKNFVg==", + "node_modules/expo-storage/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dependencies": { - "@react-native/normalize-color": "^2.0.0", - "debug": "^4.3.2" - }, - "peerDependencies": { - "expo": "*" + "@babel/highlight": "^7.10.4" } }, - "node_modules/expo/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "node_modules/expo-storage/node_modules/@expo/cli": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.7.3.tgz", + "integrity": "sha512-uMGHbAhApqXR2sd1KPhgvpbOhBBnspad8msEqHleT2PHXwKIwTUDzBGO9+jdOAWwCx2MJfw3+asYjzoD3DN9Bg==", + "dependencies": { + "@babel/runtime": "^7.20.0", + "@expo/code-signing-certificates": "0.0.5", + "@expo/config": "~8.0.0", + "@expo/config-plugins": "~6.0.0", + "@expo/dev-server": "0.3.0", + "@expo/devcert": "^1.0.0", + "@expo/json-file": "^8.2.37", + "@expo/metro-config": "~0.7.0", + "@expo/osascript": "^2.0.31", + "@expo/package-manager": "~1.0.0", + "@expo/plist": "^0.0.20", + "@expo/prebuild-config": "6.0.1", + "@expo/rudder-sdk-node": "1.1.1", + "@expo/spawn-async": "1.5.0", + "@expo/xcpretty": "^4.2.1", + "@urql/core": "2.3.6", + "@urql/exchange-retry": "0.3.0", + "accepts": "^1.3.8", + "arg": "4.1.0", + "better-opn": "~3.0.2", + "bplist-parser": "^0.3.1", + "cacache": "^15.3.0", + "chalk": "^4.0.0", + "ci-info": "^3.3.0", + "debug": "^4.3.4", + "env-editor": "^0.4.1", + "form-data": "^3.0.1", + "freeport-async": "2.0.0", + "fs-extra": "~8.1.0", + "getenv": "^1.0.0", + "graphql": "15.8.0", + "graphql-tag": "^2.10.1", + "https-proxy-agent": "^5.0.1", + "internal-ip": "4.3.0", + "is-root": "^2.1.0", + "js-yaml": "^3.13.1", + "json-schema-deref-sync": "^0.13.0", + "md5-file": "^3.2.3", + "md5hex": "^1.0.0", + "minipass": "3.1.6", + "node-fetch": "^2.6.7", + "node-forge": "^1.3.1", + "npm-package-arg": "^7.0.0", + "ora": "3.4.0", + "pretty-bytes": "5.6.0", + "progress": "2.0.3", + "prompts": "^2.3.2", + "qrcode-terminal": "0.11.0", + "requireg": "^0.2.2", + "resolve-from": "^5.0.0", + "semver": "^6.3.0", + "send": "^0.18.0", + "slugify": "^1.3.4", + "structured-headers": "^0.4.1", + "tar": "^6.0.5", + "tempy": "^0.7.1", + "terminal-link": "^2.1.1", + "text-table": "^0.2.0", + "url-join": "4.0.0", + "wrap-ansi": "^7.0.0", + "ws": "^8.12.1" + }, "bin": { - "uuid": "bin/uuid" + "expo-internal": "build/bin/cli" } }, - "node_modules/fast-base64-decode": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz", - "integrity": "sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==" + "node_modules/expo-storage/node_modules/@expo/config": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-8.0.5.tgz", + "integrity": "sha512-3CnLmtAQUWqLZwTRliS23QoFwdyhg4AWtp6gZ0qfcXthR84RvlZKcCDQQIyPiRUgu8dZa+gQDcdRJtgE+GM5XQ==", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~6.0.0", + "@expo/config-types": "^48.0.0", + "@expo/json-file": "^8.2.37", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "slugify": "^1.3.4", + "sucrase": "^3.20.0" + } }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "node_modules/expo-storage/node_modules/@expo/config-plugins": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-6.0.2.tgz", + "integrity": "sha512-Cn01fXMHwjU042EgO9oO3Mna0o/UCrW91MQLMbJa4pXM41CYGjNgVy1EVXiuRRx/upegHhvltBw5D+JaUm8aZQ==", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "@expo/config-types": "^48.0.0", + "@expo/json-file": "~8.2.37", + "@expo/plist": "^0.0.20", + "@expo/sdk-runtime-versions": "^1.0.0", + "@react-native/normalize-color": "^2.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.1", + "find-up": "~5.0.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "resolve-from": "^5.0.0", + "semver": "^7.3.5", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.4.23" + } + }, + "node_modules/expo-storage/node_modules/@expo/config-plugins/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=8.6.0" + "node": ">=10" } }, - "node_modules/fast-xml-parser": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", - "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - ], - "dependencies": { - "strnum": "^1.0.5" - }, + "node_modules/expo-storage/node_modules/@expo/config-types": { + "version": "48.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-48.0.0.tgz", + "integrity": "sha512-DwyV4jTy/+cLzXGAo1xftS6mVlSiLIWZjl9DjTCLPFVgNYQxnh7htPilRv4rBhiNs7KaznWqKU70+4zQoKVT9A==" + }, + "node_modules/expo-storage/node_modules/@expo/config/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "bin": { - "fxparser": "src/cli/cli.js" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "node_modules/expo-storage/node_modules/@expo/dev-server": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.3.0.tgz", + "integrity": "sha512-2A6/8uZADSKAtzyR6YqhCBUFxb5DFmjxmFn0EHMqnPnsh13ZSiKEjrZPrRkM6Li2EHLYqHK2rmweJ7O/7q9pPQ==", "dependencies": { - "reusify": "^1.0.4" + "@expo/bunyan": "4.0.0", + "@expo/metro-config": "~0.7.0", + "@expo/osascript": "2.0.33", + "@expo/spawn-async": "^1.5.0", + "body-parser": "^1.20.1", + "chalk": "^4.0.0", + "connect": "^3.7.0", + "fs-extra": "9.0.0", + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1", + "node-fetch": "^2.6.0", + "open": "^8.3.0", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "serialize-error": "6.0.0", + "temp-dir": "^2.0.0" } }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "node_modules/expo-storage/node_modules/@expo/dev-server/node_modules/fs-extra": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", "dependencies": { - "bser": "2.1.1" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/fbemitter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", - "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", - "dependencies": { - "fbjs": "^3.0.0" + "node_modules/expo-storage/node_modules/@expo/dev-server/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/fbjs": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", - "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", + "node_modules/expo-storage/node_modules/@expo/json-file": { + "version": "8.2.37", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz", + "integrity": "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==", "dependencies": { - "cross-fetch": "^3.1.5", - "fbjs-css-vars": "^1.0.0", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^1.0.35" + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.2", + "write-file-atomic": "^2.3.0" } }, - "node_modules/fbjs-css-vars": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", - "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" - }, - "node_modules/fetch-retry": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-4.1.1.tgz", - "integrity": "sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==" + "node_modules/expo-storage/node_modules/@expo/metro-config": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.7.1.tgz", + "integrity": "sha512-vGWU62Zp5pRGw5IEHDNdqvsy62/hu/Na7bswePYVjoaItOjJY7+qilFeF0AAK+3V8qAM8fpltH3ByylKfWaA7A==", + "dependencies": { + "@expo/config": "~8.0.0", + "chalk": "^4.1.0", + "debug": "^4.3.2", + "find-yarn-workspace-root": "~2.0.0", + "getenv": "^1.0.0", + "resolve-from": "^5.0.0", + "sucrase": "^3.20.0" + } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/expo-storage/node_modules/@expo/osascript": { + "version": "2.0.33", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.0.33.tgz", + "integrity": "sha512-FQinlwHrTlJbntp8a7NAlCKedVXe06Va/0DSLXRO8lZVtgbEMrYYSUZWQNcOlNtc58c2elNph6z9dMOYwSo3JQ==", "dependencies": { - "to-regex-range": "^5.0.1" + "@expo/spawn-async": "^1.5.0", + "exec-async": "^2.2.0" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "node_modules/expo-storage/node_modules/@expo/package-manager": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.0.3.tgz", + "integrity": "sha512-NpdwcRar22gJDDug3GEb62Ka6vy+Yi//3zTdYhdkzwekY6qzg7+vZCeEKayFJjvbCjjOPNSrauNR4zD+WJmRIQ==", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", + "@expo/json-file": "^8.2.37", + "@expo/spawn-async": "^1.5.0", + "ansi-regex": "^5.0.0", + "chalk": "^4.0.0", + "find-up": "^5.0.0", + "find-yarn-workspace-root": "~2.0.0", + "js-yaml": "^3.13.1", + "micromatch": "^4.0.2", + "npm-package-arg": "^7.0.0", + "split": "^1.0.1", + "sudo-prompt": "9.1.1" + } + }, + "node_modules/expo-storage/node_modules/@expo/prebuild-config": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-6.0.1.tgz", + "integrity": "sha512-WK3FDht1tdXZGCvtG5s7HSwzhsc7Tyu2DdqV9jVUsLtGD42oqUepk13mEWlU9LOTBgLsoEueKjoSK4EXOXFctw==", + "dependencies": { + "@expo/config": "~8.0.0", + "@expo/config-plugins": "~6.0.0", + "@expo/config-types": "^48.0.0", + "@expo/image-utils": "0.3.22", + "@expo/json-file": "^8.2.37", + "debug": "^4.3.1", + "fs-extra": "^9.0.0", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "xml2js": "0.4.23" + }, + "peerDependencies": { + "expo-modules-autolinking": ">=0.8.1" + } + }, + "node_modules/expo-storage/node_modules/@expo/prebuild-config/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo-storage/node_modules/@expo/prebuild-config/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo-storage/node_modules/@expo/prebuild-config/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/expo-storage/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/expo-storage/node_modules/babel-plugin-module-resolver": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz", + "integrity": "sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA==", + "dependencies": { + "find-babel-config": "^1.2.0", + "glob": "^7.1.6", + "pkg-up": "^3.1.0", + "reselect": "^4.0.0", + "resolve": "^1.13.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/expo-storage/node_modules/babel-preset-expo": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.3.2.tgz", + "integrity": "sha512-BjyvjwjJG0MaaDBLP/esbXRrAItM76po9L9zfnLxeqgFsHCIPmD+6ir45coDLGAXwR8m9It3G1yqYM9JPyemsQ==", + "dependencies": { + "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-proposal-object-rest-spread": "^7.12.13", + "@babel/plugin-transform-react-jsx": "^7.12.17", + "@babel/preset-env": "^7.20.0", + "babel-plugin-module-resolver": "^4.1.0", + "babel-plugin-react-native-web": "~0.18.10", + "metro-react-native-babel-preset": "0.73.9" + } + }, + "node_modules/expo-storage/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/expo-storage/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/expo-storage/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/expo-storage/node_modules/expo": { + "version": "48.0.21", + "resolved": "https://registry.npmjs.org/expo/-/expo-48.0.21.tgz", + "integrity": "sha512-Z211SC4wZP4Xd5/RBJhEw4uwSgpfzAvMh6IVdzwEVAJAcV1s48CACcSmIUe+7QJjEPzmb3T5Yo4EJ/JJXJ2o9A==", + "dependencies": { + "@babel/runtime": "^7.20.0", + "@expo/cli": "0.7.3", + "@expo/config": "8.0.5", + "@expo/config-plugins": "6.0.2", + "@expo/vector-icons": "^13.0.0", + "babel-preset-expo": "~9.3.2", + "cross-spawn": "^6.0.5", + "expo-application": "~5.1.1", + "expo-asset": "~8.9.1", + "expo-constants": "~14.2.1", + "expo-file-system": "~15.2.2", + "expo-font": "~11.1.1", + "expo-keep-awake": "~12.0.1", + "expo-modules-autolinking": "1.2.0", + "expo-modules-core": "1.2.7", + "fbemitter": "^3.0.0", + "getenv": "^1.0.0", + "invariant": "^2.2.4", + "md5-file": "^3.2.3", + "node-fetch": "^2.6.7", + "pretty-format": "^26.5.2", + "uuid": "^3.4.0" + }, + "bin": { + "expo": "bin/cli.js" + } + }, + "node_modules/expo-storage/node_modules/expo-application": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-5.1.1.tgz", + "integrity": "sha512-aDatTcTTCdTbHw8h4/Tq2ilc6InM5ntF9xWCJdOcnUEcglxxGphVI/lzJKBaBF6mJECA8mEOjpVg2EGxOctTwg==", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-storage/node_modules/expo-asset": { + "version": "8.9.2", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-8.9.2.tgz", + "integrity": "sha512-aHMaZkIG5/UoguINEHm2ln/KviU2m/yuryslnhCKR3KXRxiLnMhxmrONLGbknuNE0O1iCaprrl1w3y71u01Rpw==", + "dependencies": { + "blueimp-md5": "^2.10.0", + "expo-constants": "~14.3.0", + "expo-file-system": "~15.3.0", + "invariant": "^2.2.4", + "md5-file": "^3.2.3", + "path-browserify": "^1.0.0", + "url-parse": "^1.5.9" + } + }, + "node_modules/expo-storage/node_modules/expo-asset/node_modules/expo-constants": { + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-14.3.0.tgz", + "integrity": "sha512-O8b+mZlPXZGH4wLLd+jMihGD0ZSMJRSmSsmcG7T60jHU3Dw4yDIuzHM/wMoBoL1pxLIbEwvcwDj0w8c+Sn+1sQ==", + "dependencies": { + "@expo/config": "~8.0.0", + "uuid": "^3.3.2" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-storage/node_modules/expo-asset/node_modules/expo-file-system": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-15.3.0.tgz", + "integrity": "sha512-YUvNZzZJlF5TZM+FoRW9biJPB7qEgZbGYm8xJpqnxpj70FkFhwwoKiXVduZk+KVNiIs7d0q7e+Jdvmcr+Id3FQ==", + "dependencies": { + "uuid": "^3.4.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-storage/node_modules/expo-constants": { + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-14.2.1.tgz", + "integrity": "sha512-DD5u4QmBds2U7uYo409apV7nX+XjudARcgqe7S9aRFJ/6kyftmuxvk1DpaU4X42Av8z/tfKwEpuxl+vl7HHx/Q==", + "dependencies": { + "@expo/config": "~8.0.0", + "uuid": "^3.3.2" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-storage/node_modules/expo-file-system": { + "version": "15.2.2", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-15.2.2.tgz", + "integrity": "sha512-LFkOLcWwlmnjkURxZ3/0ukS35OswX8iuQknLHRHeyk8mUA8fpRPPelD/a1lS+yclqfqavMJmTXVKM1Nsq5XVMA==", + "dependencies": { + "uuid": "^3.4.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-storage/node_modules/expo-font": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-11.1.1.tgz", + "integrity": "sha512-X+aICqYY69hiiDDtcNrjq8KutHrH2TrHuMqk0Rfq0P7hF6hMd+YefwLBNkvIrqrgmTAuqiLjMUwj2rHLqmgluw==", + "dependencies": { + "fontfaceobserver": "^2.1.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-storage/node_modules/expo-keep-awake": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-12.0.1.tgz", + "integrity": "sha512-hqeCnb4033TyuZaXs93zTK7rjVJ3bywXATyMmKmKkLEsH2PKBAl/VmjlCOPQL/2Ncqz6aj7Wo//tjeJTARBD4g==", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-storage/node_modules/expo-modules-autolinking": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.2.0.tgz", + "integrity": "sha512-QOPh/iXykNDCAzUual1imSrn2aDakzCGUp2QmxVREr0llajXygroUWlT9sQXh1zKzbNp+a+i/xK375ZeBFiNJA==", + "dependencies": { + "chalk": "^4.1.0", + "commander": "^7.2.0", + "fast-glob": "^3.2.5", + "find-up": "^5.0.0", + "fs-extra": "^9.1.0" + }, + "bin": { + "expo-modules-autolinking": "bin/expo-modules-autolinking.js" + } + }, + "node_modules/expo-storage/node_modules/expo-modules-autolinking/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo-storage/node_modules/expo-modules-autolinking/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/expo-storage/node_modules/expo-modules-core": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.2.7.tgz", + "integrity": "sha512-sulqn2M8+tIdxi6QFkKppDEzbePAscgE2LEHocYoQOgHxJpeT7axE0Hkzc+81EeviQilZzGeFZMtNMGh3c9yJg==", + "dependencies": { + "compare-versions": "^3.4.0", + "invariant": "^2.2.4" + } + }, + "node_modules/expo-storage/node_modules/find-babel-config": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.2.tgz", + "integrity": "sha512-oK59njMyw2y3yxto1BCfVK7MQp/OYf4FleHu0RgosH3riFJ1aOuo/7naLDLAObfrgn3ueFhw5sAT/cp0QuJI3Q==", + "dependencies": { + "json5": "^1.0.2", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/expo-storage/node_modules/find-babel-config/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/expo-storage/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo-storage/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/expo-storage/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/expo-storage/node_modules/jsonfile/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/expo-storage/node_modules/metro-react-native-babel-preset": { + "version": "0.73.9", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.73.9.tgz", + "integrity": "sha512-AoD7v132iYDV4K78yN2OLgTPwtAKn0XlD2pOhzyBxiI8PeXzozhbKyPV7zUOJUPETj+pcEVfuYj5ZN/8+bhbCw==", + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "react-refresh": "^0.4.0" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/expo-storage/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/expo-storage/node_modules/react-refresh": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", + "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expo-storage/node_modules/sudo-prompt": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz", + "integrity": "sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==" + }, + "node_modules/expo-storage/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/expo-storage/node_modules/universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/expo-storage/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/expo-storage/node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/expo-storage/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/expo-system-ui": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-2.9.3.tgz", + "integrity": "sha512-RNFNBLJ9lhnjOGrHhtfDc15Ry/lF+SA4kwulmHzYGqaTeYvsL9q0K0+m9qmxuDdrbKJkuurvzvjVylDNnKNFVg==", + "dependencies": { + "@react-native/normalize-color": "^2.0.0", + "debug": "^4.3.2" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/fast-base64-decode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz", + "integrity": "sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-xml-parser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fbemitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", + "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", + "dependencies": { + "fbjs": "^3.0.0" + } + }, + "node_modules/fbjs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", + "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", + "dependencies": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^1.0.35" + } + }, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" + }, + "node_modules/fetch-retry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-4.1.1.tgz", + "integrity": "sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", "parseurl": "~1.3.3", "statuses": "~1.5.0", "unpipe": "~1.0.0" @@ -9424,6 +10149,14 @@ "node": ">=0.10.0" } }, + "node_modules/is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "engines": { + "node": ">=6" + } + }, "node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", diff --git a/react-native/ModeratedChat/package.json b/react-native/ModeratedChat/package.json index 469a3bd..6f953cc 100644 --- a/react-native/ModeratedChat/package.json +++ b/react-native/ModeratedChat/package.json @@ -10,7 +10,7 @@ "ts:check": "tsc" }, "dependencies": { - "@gomomento/sdk-web": "^1.66.0", + "@gomomento/sdk-web": "^1.101.2", "@react-native/metro-config": "^0.73.5", "@types/react": "~18.2.14", "base-64": "^1.0.0", @@ -20,7 +20,7 @@ "expo-image-picker": "~14.3.2", "expo-splash-screen": "~0.20.5", "expo-status-bar": "~1.6.0", - "expo-storage": "^51.0.8", + "expo-storage": "^48.1.0", "expo-system-ui": "^2.9.3", "react": "18.2.0", "react-native": "0.72.10", From 2e59399fcea41f62c2751ca67bfeabb9eb02ba1f Mon Sep 17 00:00:00 2001 From: anitarua Date: Tue, 26 Nov 2024 13:52:15 -0800 Subject: [PATCH 02/13] chore: upgrade momento dep in android demo --- android/ModeratedChat/app/build.gradle.kts | 2 +- .../software/momento/kotlin/moderatedchat/MainActivity.kt | 8 +++++++- android/ModeratedChat/build.gradle.kts | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/android/ModeratedChat/app/build.gradle.kts b/android/ModeratedChat/app/build.gradle.kts index 89cf886..2ca00a9 100644 --- a/android/ModeratedChat/app/build.gradle.kts +++ b/android/ModeratedChat/app/build.gradle.kts @@ -52,7 +52,7 @@ android { dependencies { implementation("io.coil-kt:coil-compose:2.5.0") implementation("com.google.code.gson:gson:2.10.1") - implementation("software.momento.kotlin:sdk:0.1.3") + implementation("software.momento.kotlin:sdk:0.3.0") implementation("androidx.core:core-ktx:1.12.0") implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.7.0") implementation("androidx.activity:activity-compose:1.8.2") diff --git a/android/ModeratedChat/app/src/main/java/software/momento/kotlin/moderatedchat/MainActivity.kt b/android/ModeratedChat/app/src/main/java/software/momento/kotlin/moderatedchat/MainActivity.kt index 45c04c6..d5c29c4 100644 --- a/android/ModeratedChat/app/src/main/java/software/momento/kotlin/moderatedchat/MainActivity.kt +++ b/android/ModeratedChat/app/src/main/java/software/momento/kotlin/moderatedchat/MainActivity.kt @@ -97,7 +97,7 @@ import kotlin.collections.HashMap import kotlin.system.exitProcess import kotlin.time.Duration.Companion.seconds -const val baseApiUrl = "https://your-api-endpoint.com" +const val baseApiUrl = "https://oljvzwr8zb.execute-api.us-west-2.amazonaws.com/prod/" var momentoApiToken: String = "" var tokenExpiresAt: Long = 0 var topicClient: TopicClient? = null @@ -247,6 +247,7 @@ fun ModeratedChatLayout( supportedLanguages = it }, onLanguageLoadError = { + println("unable to load languages") loadError = true }, language = currentLanguage, @@ -258,6 +259,7 @@ fun ModeratedChatLayout( coroutineScope { launch { try { + println("token expires at $tokenExpiresAt") val tokenExpiresInSecs = tokenExpiresAt - (System.currentTimeMillis() / 1000) println("token expires in $tokenExpiresInSecs") @@ -265,6 +267,7 @@ fun ModeratedChatLayout( getClients(userName, userId) } } catch (e: Exception) { + println("error refreshing token") loadError = true } } @@ -284,6 +287,7 @@ fun ModeratedChatLayout( } } } catch (e: Exception) { + println("could not load messages for language") loadError = true } messagesLoaded = true @@ -303,6 +307,7 @@ fun ModeratedChatLayout( // TODO: getting a RuntimeException about grpc channel not // being closed correctly. } catch (e: Exception) { + println("error subscribing or receiving messages?") loadError = true } @@ -761,6 +766,7 @@ private fun getApiToken(username: String, id: UUID) { val jsonObject = JSONObject(response.toString()) momentoApiToken = jsonObject.getString("token") tokenExpiresAt = jsonObject.getLong("expiresAtEpoch") + println("Received new token that expires at epoch $tokenExpiresAt") } } } diff --git a/android/ModeratedChat/build.gradle.kts b/android/ModeratedChat/build.gradle.kts index 4645626..7e39ffc 100644 --- a/android/ModeratedChat/build.gradle.kts +++ b/android/ModeratedChat/build.gradle.kts @@ -1,5 +1,5 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id("com.android.application") version "8.2.2" apply false + id("com.android.application") version "8.7.2" apply false id("org.jetbrains.kotlin.android") version "1.9.0" apply false } \ No newline at end of file diff --git a/android/ModeratedChat/gradle/wrapper/gradle-wrapper.properties b/android/ModeratedChat/gradle/wrapper/gradle-wrapper.properties index 9266efa..ad03829 100644 --- a/android/ModeratedChat/gradle/wrapper/gradle-wrapper.properties +++ b/android/ModeratedChat/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Fri Jan 26 14:53:35 PST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From bf0c18d4577c6d19fdb1ec65adccbaf471c978a8 Mon Sep 17 00:00:00 2001 From: anitarua Date: Tue, 26 Nov 2024 13:52:29 -0800 Subject: [PATCH 03/13] chore: upgrade momento dep in ios demo --- .../ModeratedChat.xcodeproj/project.pbxproj | 30 +++++++++--------- .../xcshareddata/swiftpm/Package.resolved | 7 ++-- .../UserInterfaceState.xcuserstate | Bin 108169 -> 114849 bytes .../xcschemes/ModeratedChat.xcscheme | 1 + ios/README.md | 4 ++- 5 files changed, 23 insertions(+), 19 deletions(-) diff --git a/ios/ModeratedChat/ModeratedChat.xcodeproj/project.pbxproj b/ios/ModeratedChat/ModeratedChat.xcodeproj/project.pbxproj index eca66ec..70e83dc 100644 --- a/ios/ModeratedChat/ModeratedChat.xcodeproj/project.pbxproj +++ b/ios/ModeratedChat/ModeratedChat.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 083856442CF673C10090B718 /* Momento in Frameworks */ = {isa = PBXBuildFile; productRef = 083856432CF673C10090B718 /* Momento */; }; 083F34212B743B6A00489C8D /* Profanity Filter in Frameworks */ = {isa = PBXBuildFile; productRef = 083F34202B743B6A00489C8D /* Profanity Filter */; }; 08ABEF462B62F31A00A31A34 /* MessageStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08ABEF452B62F31A00A31A34 /* MessageStore.swift */; }; 08B3F11E2B572889003D2CB3 /* ModeratedChatApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08B3F11D2B572889003D2CB3 /* ModeratedChatApp.swift */; }; @@ -17,7 +18,6 @@ 08B3F12E2B57593A003D2CB3 /* ChatView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08B3F12D2B57593A003D2CB3 /* ChatView.swift */; }; 08B3F1302B575A3E003D2CB3 /* HeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08B3F12F2B575A3E003D2CB3 /* HeaderView.swift */; }; 08B3F1322B58418D003D2CB3 /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08B3F1312B58418D003D2CB3 /* Models.swift */; }; - 08B3F1352B5890ED003D2CB3 /* Momento in Frameworks */ = {isa = PBXBuildFile; productRef = 08B3F1342B5890ED003D2CB3 /* Momento */; }; 08B3F1392B59AAE0003D2CB3 /* Users.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08B3F1382B59AAE0003D2CB3 /* Users.swift */; }; 08B3F13C2B59B1DA003D2CB3 /* Alamofire in Frameworks */ = {isa = PBXBuildFile; productRef = 08B3F13B2B59B1DA003D2CB3 /* Alamofire */; }; 08ED530F2B63001E008432E1 /* MomentoClients.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08ED530E2B63001E008432E1 /* MomentoClients.swift */; }; @@ -45,7 +45,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 08B3F1352B5890ED003D2CB3 /* Momento in Frameworks */, + 083856442CF673C10090B718 /* Momento in Frameworks */, 083F34212B743B6A00489C8D /* Profanity Filter in Frameworks */, 08B3F13C2B59B1DA003D2CB3 /* Alamofire in Frameworks */, ); @@ -114,9 +114,9 @@ ); name = ModeratedChat; packageProductDependencies = ( - 08B3F1342B5890ED003D2CB3 /* Momento */, 08B3F13B2B59B1DA003D2CB3 /* Alamofire */, 083F34202B743B6A00489C8D /* Profanity Filter */, + 083856432CF673C10090B718 /* Momento */, ); productName = ModeratedChat; productReference = 08B3F11A2B572889003D2CB3 /* ModeratedChat.app */; @@ -147,9 +147,9 @@ ); mainGroup = 08B3F1112B572889003D2CB3; packageReferences = ( - 08B3F1332B5890ED003D2CB3 /* XCRemoteSwiftPackageReference "client-sdk-swift" */, 08B3F13A2B59B1DA003D2CB3 /* XCRemoteSwiftPackageReference "Alamofire" */, 083F341F2B743B6A00489C8D /* XCRemoteSwiftPackageReference "profanitiy-filter-swift" */, + 083856422CF673C10090B718 /* XCRemoteSwiftPackageReference "client-sdk-swift" */, ); productRefGroup = 08B3F11B2B572889003D2CB3 /* Products */; projectDirPath = ""; @@ -398,20 +398,20 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - 083F341F2B743B6A00489C8D /* XCRemoteSwiftPackageReference "profanitiy-filter-swift" */ = { + 083856422CF673C10090B718 /* XCRemoteSwiftPackageReference "client-sdk-swift" */ = { isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/jvanbrunt/profanitiy-filter-swift"; + repositoryURL = "https://github.com/momentohq/client-sdk-swift"; requirement = { kind = exactVersion; - version = 0.0.2; + version = 0.7.1; }; }; - 08B3F1332B5890ED003D2CB3 /* XCRemoteSwiftPackageReference "client-sdk-swift" */ = { + 083F341F2B743B6A00489C8D /* XCRemoteSwiftPackageReference "profanitiy-filter-swift" */ = { isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/momentohq/client-sdk-swift"; + repositoryURL = "https://github.com/jvanbrunt/profanitiy-filter-swift"; requirement = { kind = exactVersion; - version = 0.5.0; + version = 0.0.2; }; }; 08B3F13A2B59B1DA003D2CB3 /* XCRemoteSwiftPackageReference "Alamofire" */ = { @@ -425,16 +425,16 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ + 083856432CF673C10090B718 /* Momento */ = { + isa = XCSwiftPackageProductDependency; + package = 083856422CF673C10090B718 /* XCRemoteSwiftPackageReference "client-sdk-swift" */; + productName = Momento; + }; 083F34202B743B6A00489C8D /* Profanity Filter */ = { isa = XCSwiftPackageProductDependency; package = 083F341F2B743B6A00489C8D /* XCRemoteSwiftPackageReference "profanitiy-filter-swift" */; productName = "Profanity Filter"; }; - 08B3F1342B5890ED003D2CB3 /* Momento */ = { - isa = XCSwiftPackageProductDependency; - package = 08B3F1332B5890ED003D2CB3 /* XCRemoteSwiftPackageReference "client-sdk-swift" */; - productName = Momento; - }; 08B3F13B2B59B1DA003D2CB3 /* Alamofire */ = { isa = XCSwiftPackageProductDependency; package = 08B3F13A2B59B1DA003D2CB3 /* XCRemoteSwiftPackageReference "Alamofire" */; diff --git a/ios/ModeratedChat/ModeratedChat.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/ios/ModeratedChat/ModeratedChat.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index f8dd809..1dcf9d2 100644 --- a/ios/ModeratedChat/ModeratedChat.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/ios/ModeratedChat/ModeratedChat.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,4 +1,5 @@ { + "originHash" : "2157297f3ba668b87b8ebc4cb6a19d97aedf6ac74c06b30b189552fe127daad5", "pins" : [ { "identity" : "alamofire", @@ -14,8 +15,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/momentohq/client-sdk-swift", "state" : { - "revision" : "7d1f7b377921e1867d074c654a7b6ba0d91eea48", - "version" : "0.5.0" + "revision" : "71048be91984c5117f02045aa8ee011638cb1493", + "version" : "0.7.1" } }, { @@ -136,5 +137,5 @@ } } ], - "version" : 2 + "version" : 3 } diff --git a/ios/ModeratedChat/ModeratedChat.xcodeproj/project.xcworkspace/xcuserdata/anita.xcuserdatad/UserInterfaceState.xcuserstate b/ios/ModeratedChat/ModeratedChat.xcodeproj/project.xcworkspace/xcuserdata/anita.xcuserdatad/UserInterfaceState.xcuserstate index 31cd8fecd0928b7cf8080aa66ab27a13034d070a..47f9de4c244143485695274a3106ddeeed533260 100644 GIT binary patch literal 114849 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 literal 108169 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 diff --git a/ios/ModeratedChat/ModeratedChat.xcodeproj/xcshareddata/xcschemes/ModeratedChat.xcscheme b/ios/ModeratedChat/ModeratedChat.xcodeproj/xcshareddata/xcschemes/ModeratedChat.xcscheme index a7bd638..067c876 100644 --- a/ios/ModeratedChat/ModeratedChat.xcodeproj/xcshareddata/xcschemes/ModeratedChat.xcscheme +++ b/ios/ModeratedChat/ModeratedChat.xcodeproj/xcshareddata/xcschemes/ModeratedChat.xcscheme @@ -38,6 +38,7 @@ ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" debugServiceExtension = "internal" + enableGPUValidationMode = "1" allowLocationSimulation = "YES"> diff --git a/ios/README.md b/ios/README.md index a59fed6..1f760a8 100644 --- a/ios/README.md +++ b/ios/README.md @@ -23,4 +23,6 @@ Note: You may also need to specify a variable to enable logging output in order ```bash IDEPreferLogStreaming=YES -``` \ No newline at end of file +``` + +Note: if you run into an error saying "principal class is nil because all fallbacks have failed", you can try turning off API validation in the settings as mentioned in this [github issue comment](https://github.com/flutter/flutter/issues/150227#issuecomment-2423291527). \ No newline at end of file From 4db5c745781f1b502891c77ea727e5e5c4fddffc Mon Sep 17 00:00:00 2001 From: anitarua Date: Tue, 26 Nov 2024 13:58:32 -0800 Subject: [PATCH 04/13] clean up extra comments in android demo --- .../software/momento/kotlin/moderatedchat/MainActivity.kt | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/android/ModeratedChat/app/src/main/java/software/momento/kotlin/moderatedchat/MainActivity.kt b/android/ModeratedChat/app/src/main/java/software/momento/kotlin/moderatedchat/MainActivity.kt index d5c29c4..45c04c6 100644 --- a/android/ModeratedChat/app/src/main/java/software/momento/kotlin/moderatedchat/MainActivity.kt +++ b/android/ModeratedChat/app/src/main/java/software/momento/kotlin/moderatedchat/MainActivity.kt @@ -97,7 +97,7 @@ import kotlin.collections.HashMap import kotlin.system.exitProcess import kotlin.time.Duration.Companion.seconds -const val baseApiUrl = "https://oljvzwr8zb.execute-api.us-west-2.amazonaws.com/prod/" +const val baseApiUrl = "https://your-api-endpoint.com" var momentoApiToken: String = "" var tokenExpiresAt: Long = 0 var topicClient: TopicClient? = null @@ -247,7 +247,6 @@ fun ModeratedChatLayout( supportedLanguages = it }, onLanguageLoadError = { - println("unable to load languages") loadError = true }, language = currentLanguage, @@ -259,7 +258,6 @@ fun ModeratedChatLayout( coroutineScope { launch { try { - println("token expires at $tokenExpiresAt") val tokenExpiresInSecs = tokenExpiresAt - (System.currentTimeMillis() / 1000) println("token expires in $tokenExpiresInSecs") @@ -267,7 +265,6 @@ fun ModeratedChatLayout( getClients(userName, userId) } } catch (e: Exception) { - println("error refreshing token") loadError = true } } @@ -287,7 +284,6 @@ fun ModeratedChatLayout( } } } catch (e: Exception) { - println("could not load messages for language") loadError = true } messagesLoaded = true @@ -307,7 +303,6 @@ fun ModeratedChatLayout( // TODO: getting a RuntimeException about grpc channel not // being closed correctly. } catch (e: Exception) { - println("error subscribing or receiving messages?") loadError = true } @@ -766,7 +761,6 @@ private fun getApiToken(username: String, id: UUID) { val jsonObject = JSONObject(response.toString()) momentoApiToken = jsonObject.getString("token") tokenExpiresAt = jsonObject.getLong("expiresAtEpoch") - println("Received new token that expires at epoch $tokenExpiresAt") } } } From 92c745e7ef28704578f2864175911db097f706e7 Mon Sep 17 00:00:00 2001 From: anitarua Date: Tue, 26 Nov 2024 16:54:00 -0800 Subject: [PATCH 05/13] chore: upgrade momento dep in flutter demo --- flutter/moderated_chat/pubspec.lock | 12 ++++++------ flutter/moderated_chat/pubspec.yaml | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/flutter/moderated_chat/pubspec.lock b/flutter/moderated_chat/pubspec.lock index 520edae..d968701 100644 --- a/flutter/moderated_chat/pubspec.lock +++ b/flutter/moderated_chat/pubspec.lock @@ -364,10 +364,10 @@ packages: dependency: "direct main" description: name: momento - sha256: "74913b8d1da834f0e79253694e8a251623598bc1bb02981b52673c40ba76892e" + sha256: b0f73d470b21706f71d0521df849663433919760a2681f70e8c4197d807454b9 url: "https://pub.dev" source: hosted - version: "0.1.0" + version: "0.3.0" nested: dependency: transitive description: @@ -481,10 +481,10 @@ packages: dependency: transitive description: name: string_validator - sha256: "54d4f42cd6878ae72793a58a529d9a18ebfdfbfebd9793bbe55c9b28935e8543" + sha256: a278d038104aa2df15d0e09c47cb39a49f907260732067d0034dc2f2e4e2ac94 url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.1.0" term_glyph: dependency: transitive description: @@ -513,10 +513,10 @@ packages: dependency: "direct main" description: name: uuid - sha256: cd210a09f7c18cbe5a02511718e0334de6559871052c90a90c0cca46a4aa81c8 + sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff url: "https://pub.dev" source: hosted - version: "4.3.3" + version: "4.5.1" vector_graphics: dependency: transitive description: diff --git a/flutter/moderated_chat/pubspec.yaml b/flutter/moderated_chat/pubspec.yaml index e9459df..c38150b 100644 --- a/flutter/moderated_chat/pubspec.yaml +++ b/flutter/moderated_chat/pubspec.yaml @@ -35,7 +35,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 - momento: ^0.1.0 + momento: ^0.3.0 http: ^1.2.0 uuid: ^4.3.3 flutter_svg: ^2.0.9 From dc5aeeb9dc65f57d3f143d3f4b22308c3bfea54d Mon Sep 17 00:00:00 2001 From: anitarua Date: Mon, 2 Dec 2024 09:51:09 -0800 Subject: [PATCH 06/13] revert changes to android gradle settings --- android/ModeratedChat/build.gradle.kts | 2 +- android/ModeratedChat/gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/android/ModeratedChat/build.gradle.kts b/android/ModeratedChat/build.gradle.kts index 7e39ffc..4645626 100644 --- a/android/ModeratedChat/build.gradle.kts +++ b/android/ModeratedChat/build.gradle.kts @@ -1,5 +1,5 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id("com.android.application") version "8.7.2" apply false + id("com.android.application") version "8.2.2" apply false id("org.jetbrains.kotlin.android") version "1.9.0" apply false } \ No newline at end of file diff --git a/android/ModeratedChat/gradle/wrapper/gradle-wrapper.properties b/android/ModeratedChat/gradle/wrapper/gradle-wrapper.properties index ad03829..9266efa 100644 --- a/android/ModeratedChat/gradle/wrapper/gradle-wrapper.properties +++ b/android/ModeratedChat/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Fri Jan 26 14:53:35 PST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 44eef043af2ccee4bc99fca3f6bfbac5fc8e70f5 Mon Sep 17 00:00:00 2001 From: anitarua Date: Mon, 2 Dec 2024 10:00:29 -0800 Subject: [PATCH 07/13] add gitignore for swift project, remove files that should be ignored --- ios/.gitignore | 62 ++++++++++++++++++ .../UserInterfaceState.xcuserstate | Bin 114849 -> 115543 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 6 -- .../xcschemes/xcschememanagement.plist | 22 ------- 4 files changed, 62 insertions(+), 28 deletions(-) create mode 100644 ios/.gitignore delete mode 100644 ios/ModeratedChat/ModeratedChat.xcodeproj/xcuserdata/anita.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist delete mode 100644 ios/ModeratedChat/ModeratedChat.xcodeproj/xcuserdata/anita.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/ios/.gitignore b/ios/.gitignore new file mode 100644 index 0000000..fda4de3 --- /dev/null +++ b/ios/.gitignore @@ -0,0 +1,62 @@ +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## User settings +xcuserdata/ + +## Obj-C/Swift specific +*.hmap + +## App packaging +*.ipa +*.dSYM.zip +*.dSYM + +## Playgrounds +timeline.xctimeline +playground.xcworkspace + +# Swift Package Manager +# +# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. +# Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + +.build/ + +# CocoaPods +# +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# +# Pods/ +# +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace + +# Carthage +# +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts + +Carthage/Build/ + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/#source-control + +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output \ No newline at end of file diff --git a/ios/ModeratedChat/ModeratedChat.xcodeproj/project.xcworkspace/xcuserdata/anita.xcuserdatad/UserInterfaceState.xcuserstate b/ios/ModeratedChat/ModeratedChat.xcodeproj/project.xcworkspace/xcuserdata/anita.xcuserdatad/UserInterfaceState.xcuserstate index 47f9de4c244143485695274a3106ddeeed533260..d689f481311687821c77e0605747e4192a4f7bf8 100644 GIT binary patch literal 115543 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 diff --git a/ios/ModeratedChat/ModeratedChat.xcodeproj/xcuserdata/anita.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/ios/ModeratedChat/ModeratedChat.xcodeproj/xcuserdata/anita.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100644 index 315b86f..0000000 --- a/ios/ModeratedChat/ModeratedChat.xcodeproj/xcuserdata/anita.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/ios/ModeratedChat/ModeratedChat.xcodeproj/xcuserdata/anita.xcuserdatad/xcschemes/xcschememanagement.plist b/ios/ModeratedChat/ModeratedChat.xcodeproj/xcuserdata/anita.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 4cad10b..0000000 --- a/ios/ModeratedChat/ModeratedChat.xcodeproj/xcuserdata/anita.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - SchemeUserState - - ModeratedChat.xcscheme_^#shared#^_ - - orderHint - 0 - - - SuppressBuildableAutocreation - - 08B3F1192B572889003D2CB3 - - primary - - - - - From 6881b76ee04bd6b470c9745014c879661853cbb6 Mon Sep 17 00:00:00 2001 From: anitarua Date: Mon, 2 Dec 2024 12:48:44 -0800 Subject: [PATCH 08/13] update momento web demo dep for bug fix --- frontend/package-lock.json | 26 +++++++++++++------------- frontend/package.json | 4 ++-- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 4a3ac89..c66f983 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -12,8 +12,8 @@ "@auth0/auth0-react": "^2.0.1", "@emotion/react": "^11.10.6", "@emotion/styled": "^11.10.6", - "@gomomento/sdk": "1.100.0", - "@gomomento/sdk-web": "1.100.0", + "@gomomento/sdk": "1.102.0", + "@gomomento/sdk-web": "1.102.0", "@mui/icons-material": "^5.11.11", "@mui/material": "^5.11.14", "analytics": "^0.8.1", @@ -1585,12 +1585,12 @@ } }, "node_modules/@gomomento/sdk": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/@gomomento/sdk/-/sdk-1.100.0.tgz", - "integrity": "sha512-F2CsrhwH4azPQddAhSqodtaJyf/LCJsnCe0jV6l/zupWXFNl937ldKq+eOXGdmlRyBp9klzGEqEfF0iGzo7dEg==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/@gomomento/sdk/-/sdk-1.102.0.tgz", + "integrity": "sha512-QUnJnX9oMKQLUCjKaaYmnkxEoYehDLoR3q8yZMF1Ks/UG2ccCz8aaAgS9vti75EqIiQkT0C08EzZFqmF+Fl9Bg==", "dependencies": { "@gomomento/generated-types": "0.119.2", - "@gomomento/sdk-core": "1.100.0", + "@gomomento/sdk-core": "1.102.0", "@grpc/grpc-js": "1.10.9", "@types/google-protobuf": "3.15.10", "google-protobuf": "3.21.2", @@ -1601,9 +1601,9 @@ } }, "node_modules/@gomomento/sdk-core": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/@gomomento/sdk-core/-/sdk-core-1.100.0.tgz", - "integrity": "sha512-u5Ru1J0W4EqGNtRNoPa3cYjhmb5ghVITjW1+C7woEJtQoWIMaMzw7PmrjbJ9Fw2wkFo6k4Rq8JcWz4VGIcSxrg==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/@gomomento/sdk-core/-/sdk-core-1.102.0.tgz", + "integrity": "sha512-JfXpcgLUxnXWy7rDXpaCEQnZI90ORsbpxomJvgwK3gOF4JYa7XqMPIkC+8oNPEzRSJ1XXNk+41mF2+LPlsjiNA==", "dependencies": { "buffer": "6.0.3", "jwt-decode": "3.1.2" @@ -1613,12 +1613,12 @@ } }, "node_modules/@gomomento/sdk-web": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/@gomomento/sdk-web/-/sdk-web-1.100.0.tgz", - "integrity": "sha512-i3+4ZULtOHqRyiXydogkyoLdZlST8aoPvteSmqfso96ltCKEWVYYnJNJcUVNRrSVhhWjyg1lZfIBu2D/aSrtNA==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/@gomomento/sdk-web/-/sdk-web-1.102.0.tgz", + "integrity": "sha512-mEPwAi/oX1Gqg9BEXpCkFIy4Ue+TOrTeEzLOzOq5wN5TOfj9Xt5ckV7fgGFGuAOKoRpbYyq1JLn8HcaKJVTp9g==", "dependencies": { "@gomomento/generated-types-webtext": "0.119.2", - "@gomomento/sdk-core": "1.100.0", + "@gomomento/sdk-core": "1.102.0", "@types/google-protobuf": "3.15.6", "google-protobuf": "3.21.2", "grpc-web": "1.4.2", diff --git a/frontend/package.json b/frontend/package.json index a939d8d..4fd103f 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -7,8 +7,8 @@ "@auth0/auth0-react": "^2.0.1", "@emotion/react": "^11.10.6", "@emotion/styled": "^11.10.6", - "@gomomento/sdk": "1.100.0", - "@gomomento/sdk-web": "1.100.0", + "@gomomento/sdk": "1.102.0", + "@gomomento/sdk-web": "1.102.0", "@mui/icons-material": "^5.11.11", "@mui/material": "^5.11.14", "analytics": "^0.8.1", From 92bc4fde1cd03d84a290b6b17d15ffef3d84238e Mon Sep 17 00:00:00 2001 From: anitarua Date: Mon, 2 Dec 2024 12:49:15 -0800 Subject: [PATCH 09/13] update momento dep for react-native --- react-native/ModeratedChat/package-lock.json | 16 ++++++++-------- react-native/ModeratedChat/package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/react-native/ModeratedChat/package-lock.json b/react-native/ModeratedChat/package-lock.json index f6fbaaa..7ef9a86 100644 --- a/react-native/ModeratedChat/package-lock.json +++ b/react-native/ModeratedChat/package-lock.json @@ -8,7 +8,7 @@ "name": "moderatedchat", "version": "1.0.0", "dependencies": { - "@gomomento/sdk-web": "^1.101.2", + "@gomomento/sdk-web": "^1.102.0", "@react-native/metro-config": "^0.73.5", "@types/react": "~18.2.14", "base-64": "^1.0.0", @@ -3323,9 +3323,9 @@ } }, "node_modules/@gomomento/sdk-core": { - "version": "1.101.2", - "resolved": "https://registry.npmjs.org/@gomomento/sdk-core/-/sdk-core-1.101.2.tgz", - "integrity": "sha512-lx0rjFe3B+/Qp58w5Nopu1/6WFpQ08D1UfEobw+/0mApxbu5jiPc932S5JzDrnREW+5S3+0IZRFDPugWfZ3pkQ==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/@gomomento/sdk-core/-/sdk-core-1.102.0.tgz", + "integrity": "sha512-JfXpcgLUxnXWy7rDXpaCEQnZI90ORsbpxomJvgwK3gOF4JYa7XqMPIkC+8oNPEzRSJ1XXNk+41mF2+LPlsjiNA==", "dependencies": { "buffer": "6.0.3", "jwt-decode": "3.1.2" @@ -3335,12 +3335,12 @@ } }, "node_modules/@gomomento/sdk-web": { - "version": "1.101.2", - "resolved": "https://registry.npmjs.org/@gomomento/sdk-web/-/sdk-web-1.101.2.tgz", - "integrity": "sha512-XDWgkhdG1NN9/0/h/Ei7Mb1m5BqmCz7aRxYjP84CmksDerhXi47G0RWPFjfhOl+2w56NQquhW3jt9aRovbuG+A==", + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/@gomomento/sdk-web/-/sdk-web-1.102.0.tgz", + "integrity": "sha512-mEPwAi/oX1Gqg9BEXpCkFIy4Ue+TOrTeEzLOzOq5wN5TOfj9Xt5ckV7fgGFGuAOKoRpbYyq1JLn8HcaKJVTp9g==", "dependencies": { "@gomomento/generated-types-webtext": "0.119.2", - "@gomomento/sdk-core": "1.101.2", + "@gomomento/sdk-core": "1.102.0", "@types/google-protobuf": "3.15.6", "google-protobuf": "3.21.2", "grpc-web": "1.4.2", diff --git a/react-native/ModeratedChat/package.json b/react-native/ModeratedChat/package.json index 6f953cc..34de137 100644 --- a/react-native/ModeratedChat/package.json +++ b/react-native/ModeratedChat/package.json @@ -10,7 +10,7 @@ "ts:check": "tsc" }, "dependencies": { - "@gomomento/sdk-web": "^1.101.2", + "@gomomento/sdk-web": "^1.102.0", "@react-native/metro-config": "^0.73.5", "@types/react": "~18.2.14", "base-64": "^1.0.0", From 7e5a34870d116554e94de41787642c6ddf1b68fa Mon Sep 17 00:00:00 2001 From: anitarua Date: Mon, 2 Dec 2024 13:09:11 -0800 Subject: [PATCH 10/13] fix: prevent duplicate messages when switching languages --- frontend/src/ChatApp.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/frontend/src/ChatApp.tsx b/frontend/src/ChatApp.tsx index 78f234e..9fd3b7c 100644 --- a/frontend/src/ChatApp.tsx +++ b/frontend/src/ChatApp.tsx @@ -161,7 +161,13 @@ const ChatApp = () => { sourceLanguage: selectedLanguage, }); } - setChats((curr) => [...curr, message]); + // Previously, we were adding the just-received message directly + // but this caused duplicate messages to appear when switching + // languages very soon after. This may be due to the sequence page + // change, prompting the topic to send the last message(s) again. + // Let's just fetch the authoritative list of messages from the + // translation service instead. + fetchLatestChats(); } catch (e) { console.error("unable to parse chat message", e); } From 71cc4fc731a63278b113623f93db31552d7aa969 Mon Sep 17 00:00:00 2001 From: anitarua Date: Mon, 2 Dec 2024 13:12:43 -0800 Subject: [PATCH 11/13] fix same duplication bug in react native --- react-native/ModeratedChat/ChatApp.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/react-native/ModeratedChat/ChatApp.tsx b/react-native/ModeratedChat/ChatApp.tsx index 120fc71..d234746 100644 --- a/react-native/ModeratedChat/ChatApp.tsx +++ b/react-native/ModeratedChat/ChatApp.tsx @@ -105,7 +105,7 @@ const ChatApp = (props: ChatProps) => { sourceLanguage: selectedLanguage, }); } - setChats((curr) => [...curr, message]); + fetchLatestChats(); } catch (e) { console.error("unable to parse chat message", e); } From eec95dc0c47c72bf2297a927b7f6f43be0e015b7 Mon Sep 17 00:00:00 2001 From: anitarua Date: Mon, 2 Dec 2024 13:32:25 -0800 Subject: [PATCH 12/13] fix same bug in ios demo --- .../ModeratedChat/MessageStore.swift | 25 ++++++------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/ios/ModeratedChat/ModeratedChat/MessageStore.swift b/ios/ModeratedChat/ModeratedChat/MessageStore.swift index eec32a1..76c58ed 100644 --- a/ios/ModeratedChat/ModeratedChat/MessageStore.swift +++ b/ios/ModeratedChat/ModeratedChat/MessageStore.swift @@ -20,23 +20,14 @@ class MessageStore: ObservableObject { if let nonNilSubscription = momentoClients.subscription { for try await item in nonNilSubscription.stream { switch item { - case .itemText(let textItem): - let response: ChatMessageEvent = try! JSONDecoder().decode(ChatMessageEvent.self, from: textItem.value.data(using: .utf8)!) - - if response.messageType == MessageType.image { - if let image = await getImageMessage(message: response.message) { - let imageResponse = ChatMessageEvent( - user: response.user, - messageType: response.messageType, - message: image, - sourceLanguage: response.sourceLanguage, - timestamp: response.timestamp - ) - self.chatMessageEvents.append(imageResponse) - } - } else { - self.chatMessageEvents.append(response) - } + case .itemText(_): + // We used to process new events individually, but since we supported + // topics sequence page, we're more likely to receive duplicate messages + // when switching between languages very soon after sending new messages, + // probably because the sequence page is still the same. + // Let's grab the authoritative list of messages each time we subscribe and + // when we get a new item instead. + self.chatMessageEvents = await translationApi.getLatestChats() case .itemBinary(let binaryItem): let value = String(decoding: binaryItem.value, as: UTF8.self) print("Subscriber unexpectedly recieved binary message: \(value)") From 22ffb14c7f16ca041ff6a3ef4710e1c2f0fdf64f Mon Sep 17 00:00:00 2001 From: anitarua Date: Mon, 2 Dec 2024 13:48:03 -0800 Subject: [PATCH 13/13] fix same bug in android demo --- .../momento/kotlin/moderatedchat/MainActivity.kt | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/android/ModeratedChat/app/src/main/java/software/momento/kotlin/moderatedchat/MainActivity.kt b/android/ModeratedChat/app/src/main/java/software/momento/kotlin/moderatedchat/MainActivity.kt index 45c04c6..fcd8f5b 100644 --- a/android/ModeratedChat/app/src/main/java/software/momento/kotlin/moderatedchat/MainActivity.kt +++ b/android/ModeratedChat/app/src/main/java/software/momento/kotlin/moderatedchat/MainActivity.kt @@ -295,9 +295,17 @@ fun ModeratedChatLayout( try { topicSubscribe(language = currentLanguage) { - val jsonMessage = JSONObject(it) - val parsedMessage = parseMessage(jsonMessage) - currentMessages.add(parsedMessage) + // Previously, we were adding the just-received message directly + // but this caused duplicate messages to appear when switching + // languages very soon after. This may be due to the sequence page + // change, prompting the topic to send the last message(s) again. + // Let's just fetch the authoritative list of messages from the + // translation service instead. + getMessagesForLanguage(languageCode = currentLanguage) { + for (i in 0..