├── .DS_Store ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ └── pushClientWebToDockerHub.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── PULL_REQUEST_TEMPLATE.md ├── README.md ├── SECURITY.md ├── api ├── README.md ├── chats.md ├── index.js ├── pushes.md ├── swagger.js ├── swaggerOptions.js └── tags.js ├── bots ├── README.md ├── autoResponder │ ├── .env.example │ ├── actions.js │ ├── api.js │ ├── client.js │ ├── config │ │ ├── config.js │ │ ├── connect.js │ │ └── messages.js │ ├── database │ │ ├── controllers │ │ │ └── rooms.js │ │ ├── dataBase.js │ │ └── models │ │ │ └── rooms.js │ ├── handlers │ │ ├── errors.js │ │ ├── helloMessage.js │ │ ├── help.js │ │ ├── leave.js │ │ ├── start.js │ │ └── test.js │ ├── package-lock.json │ ├── package.json │ ├── presence.js │ └── router.js ├── botTemplate │ ├── .gitignore │ ├── bots │ │ ├── create-bot │ │ │ ├── .env.example │ │ │ ├── .gitignore │ │ │ ├── package-lock.json │ │ │ ├── package.json │ │ │ ├── src │ │ │ │ ├── config │ │ │ │ │ ├── Config.ts │ │ │ │ │ └── IConfig.ts │ │ │ │ ├── data │ │ │ │ │ ├── IQuestions.ts │ │ │ │ │ └── Questions.ts │ │ │ │ └── index.ts │ │ │ └── tsconfig.json │ │ ├── gptBot │ │ │ ├── .env.example │ │ │ ├── .gitignore │ │ │ ├── package-lock.json │ │ │ ├── package.json │ │ │ └── src │ │ │ │ ├── config │ │ │ │ └── Config.js │ │ │ │ ├── handlers │ │ │ │ ├── allergyHandler.js │ │ │ │ ├── exitHandler.js │ │ │ │ └── switchContextHandler.js │ │ │ │ ├── index.js │ │ │ │ ├── process │ │ │ │ ├── process.js │ │ │ │ ├── processCSV.js │ │ │ │ ├── processFileUrl.js │ │ │ │ ├── processImage.js │ │ │ │ └── processPDF.js │ │ │ │ └── utils │ │ │ │ ├── Openai.js │ │ │ │ └── analyze │ │ │ │ └── app.py │ │ ├── simple-bot │ │ │ └── index.js │ │ └── translate-bot │ │ │ ├── .env.example │ │ │ ├── .gitignore │ │ │ ├── package.json │ │ │ └── src │ │ │ ├── config │ │ │ └── Config.js │ │ │ ├── data │ │ │ └── API.JS │ │ │ └── index.js │ ├── old │ │ ├── .env.example │ │ ├── actions.js │ │ ├── api.js │ │ ├── client.js │ │ ├── config │ │ │ ├── config.js │ │ │ ├── connect.js │ │ │ └── messages.js │ │ ├── database │ │ │ ├── controllers │ │ │ │ └── rooms.js │ │ │ ├── dataBase.js │ │ │ └── models │ │ │ │ └── rooms.js │ │ ├── handlers │ │ │ ├── errors.js │ │ │ ├── helloMessage.js │ │ │ ├── help.js │ │ │ ├── leave.js │ │ │ ├── test.js │ │ │ └── userLimit.js │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── presence.js │ │ └── router.js │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── api │ │ │ ├── ApplicationAPI.ts │ │ │ ├── IApplicationAPI.ts │ │ │ └── IAuthorization.ts │ │ ├── client │ │ │ ├── IXmppRoom.ts │ │ │ ├── IXmppSender.ts │ │ │ ├── XmppClient.ts │ │ │ ├── XmppRoom.ts │ │ │ ├── XmppSender.ts │ │ │ └── types │ │ │ │ └── IKeyboard.ts │ │ ├── config │ │ │ ├── Config.ts │ │ │ └── IConfig.ts │ │ ├── connector │ │ │ ├── Connector.ts │ │ │ └── IConnector.ts │ │ ├── core │ │ │ ├── Bot.ts │ │ │ ├── IBot.ts │ │ │ ├── IMessage.ts │ │ │ ├── ISession.ts │ │ │ ├── ISessionState.ts │ │ │ ├── IStepper.ts │ │ │ ├── IUser.ts │ │ │ ├── Message.ts │ │ │ ├── Session.ts │ │ │ └── Stepper.ts │ │ ├── index.ts │ │ ├── stores │ │ │ ├── ISessionStore.ts │ │ │ └── MemorySessionStore.ts │ │ └── utils │ │ │ └── Logger.ts │ └── tsconfig.json ├── createBot │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc │ ├── .gitignore │ ├── .prettierrc.json │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── api.ts │ │ ├── config.create.ts │ │ ├── index.create.ts │ │ ├── questions.create.ts │ │ ├── types.ts │ │ └── utils.ts │ └── tsconfig.json ├── exportToUSDC │ ├── .env.example │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── api.ts │ │ ├── config.create.ts │ │ ├── db.ts │ │ ├── index.exportToUSDC.ts │ │ ├── questions.create.ts │ │ ├── types.ts │ │ └── utils.ts │ └── tsconfig.json ├── gptBot │ ├── .env.example │ ├── .gitignore │ ├── actions.js │ ├── api.js │ ├── client.js │ ├── config │ │ ├── config.js │ │ ├── connect.js │ │ └── messages.js │ ├── database │ │ ├── controllers │ │ │ └── rooms.js │ │ ├── dataBase.js │ │ └── models │ │ │ └── rooms.js │ ├── handlers │ │ ├── errors.js │ │ ├── helloMessage.js │ │ ├── help.js │ │ └── leave.js │ ├── package-lock.json │ ├── package.json │ ├── presence.js │ └── router.js ├── huthut │ ├── actions.js │ ├── api.js │ ├── client.js │ ├── config │ │ ├── config.js │ │ ├── connect.js │ │ └── messages.js │ ├── handlers │ │ ├── backTurnForest.js │ │ ├── error.js │ │ ├── frontTurnMe.js │ │ ├── help.js │ │ ├── leave.js │ │ ├── searchItems.js │ │ ├── storeItem.js │ │ ├── test.js │ │ ├── transferCoin.js │ │ └── userPay.js │ ├── package-lock.json │ ├── package.json │ └── router.js ├── merchantBot │ ├── .env.example │ ├── actions.js │ ├── api.js │ ├── client.js │ ├── config │ │ ├── config.js │ │ ├── connect.js │ │ └── messages.js │ ├── controllers │ │ ├── answers.js │ │ ├── questions.js │ │ ├── rooms.js │ │ └── users.js │ ├── dataBase.js │ ├── handlers │ │ ├── addNewItem.js │ │ ├── answer.js │ │ ├── errors.js │ │ ├── helloMessage.js │ │ ├── help.js │ │ ├── leave.js │ │ ├── mintItem.js │ │ ├── processing.js │ │ ├── question.js │ │ ├── startMint.js │ │ └── test.js │ ├── models │ │ ├── answers.js │ │ ├── questions.js │ │ ├── rooms.js │ │ └── users.js │ ├── package-lock.json │ ├── package.json │ ├── presence.js │ └── router.js ├── questionnaire │ ├── actions.js │ ├── api.js │ ├── client.js │ ├── config │ │ ├── config.js │ │ ├── connect.js │ │ └── messages.js │ ├── controllers │ │ ├── answers.js │ │ └── questions.js │ ├── dataBase.js │ ├── handlers │ │ ├── answer.js │ │ ├── help.js │ │ ├── leave.js │ │ ├── question.js │ │ └── test.js │ ├── models │ │ ├── answers.js │ │ └── questions.js │ ├── package-lock.json │ ├── package.json │ └── router.js ├── raffle │ ├── .env.development │ ├── .env.example │ ├── actions.js │ ├── api.js │ ├── client.js │ ├── config │ │ ├── config.js │ │ ├── connect.js │ │ └── messages.js │ ├── database │ │ ├── controllers │ │ │ └── rooms.js │ │ ├── dataBase.js │ │ └── models │ │ │ └── rooms.js │ ├── handlers │ │ ├── botInitiate.js │ │ ├── coins │ │ │ ├── exactAmountProcessing.js │ │ │ ├── gettingCoinsHandler.js │ │ │ ├── newIncorrectAmount.js │ │ │ └── updateIncorrectAmount.js │ │ ├── errors.js │ │ ├── getBalanceHandler.js │ │ ├── helloMessage.js │ │ ├── help.js │ │ ├── helpers │ │ │ ├── getRandomNFT.js │ │ │ └── messagingTimeout.js │ │ ├── leave.js │ │ ├── registrationActive.js │ │ ├── requestItem.js │ │ ├── test.js │ │ ├── transferItemHandler.js │ │ └── userLimit.js │ ├── package-lock.json │ ├── package.json │ ├── presence.js │ └── router.js └── translateBot │ ├── .env.example │ ├── .gitignore │ ├── actions.js │ ├── api.js │ ├── client.js │ ├── config │ ├── config.js │ ├── connect.js │ └── messages.js │ ├── database │ ├── controllers │ │ └── rooms.js │ ├── dataBase.js │ └── models │ │ └── rooms.js │ ├── handlers │ ├── errors.js │ ├── helloMessage.js │ ├── help.js │ ├── leave.js │ ├── test.js │ └── userLimit.js │ ├── package-lock.json │ ├── package.json │ ├── presence.js │ └── router.js ├── client-reactnative ├── .buckconfig ├── .detoxrc.js ├── .eslintignore ├── .eslintrc.json ├── .gitignore ├── .prettierrc.js ├── .ruby-version ├── .vscode │ └── settings.json ├── COPYING ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── NftItemGalleryModal.tsx ├── README.md ├── __tests__ │ ├── AudioPlayer │ │ ├── AudioPlayer-test.tsx │ │ ├── PlayButton-test.tsx │ │ └── __snapshots__ │ │ │ ├── AudioPlayer-test.tsx.snap │ │ │ └── PlayButton-test.tsx.snap │ ├── Chat │ │ ├── AudioMessage-test.tsx │ │ ├── AudioSendButton-test.tsx │ │ ├── ChatBackgroundCard-test.tsx │ │ ├── ChatContainer-test.tsx │ │ ├── ChatDetails │ │ │ ├── ChatDetailHeader-test.tsx │ │ │ ├── ChatDetailMembersList-test.tsx │ │ │ └── RoomDetailsCard-test.tsx │ │ ├── Composer-test.tsx │ │ ├── CreateNewChatButton-test.tsx │ │ ├── FileMessage-test.tsx │ │ ├── ImageMessage-test.tsx │ │ ├── MessageBody-test.tsx │ │ ├── MessageBubble-test.tsx │ │ ├── MessageSize-test.tsx │ │ ├── MessageText-test.tsx │ │ ├── MetaNavigation-test.tsx │ │ ├── PdfMessage-test.tsx │ │ ├── QuickReplies-test.tsx │ │ ├── RenderChatFooter-test.tsx │ │ ├── RenderDay-test.tsx │ │ ├── RoomsList-test.tsx │ │ ├── VideoMessage-test.tsx │ │ └── __snapshots__ │ │ │ ├── AudioMessage-test.tsx.snap │ │ │ ├── AudioSendButton-test.tsx.snap │ │ │ ├── ChatBackgroundCard-test.tsx.snap │ │ │ ├── Composer-test.tsx.snap │ │ │ ├── CreateNewChatButton-test.tsx.snap │ │ │ ├── FileMessage-test.tsx.snap │ │ │ ├── ImageMessage-test.tsx.snap │ │ │ ├── MessageSize-test.tsx.snap │ │ │ ├── PdfMessage-test.tsx.snap │ │ │ ├── RenderChatFooter-test.tsx.snap │ │ │ ├── RenderDay-test.tsx.snap │ │ │ └── VideoMessage-test.tsx.snap │ ├── Login │ │ ├── LoginScreen-test.tsx │ │ ├── RegisterExternalWalletModal-test.tsx │ │ ├── SocialButton-test.tsx │ │ └── __snapshots__ │ │ │ └── SocialButton-test.tsx.snap │ ├── MainHeader │ │ ├── HeaderAppLogo-test.tsx │ │ ├── HeaderAppTitle-test.tsx │ │ ├── HeaderBalanceButton-test.tsx │ │ ├── HeaderMenu-test.tsx │ │ ├── MainHeader-test.tsx │ │ ├── SubMenu-test.tsx │ │ └── __snapshots__ │ │ │ └── SubMenu-test.tsx.snap │ ├── Modals │ │ ├── Chat │ │ │ ├── ChangeRoomDescriptionModal-test.tsx │ │ │ ├── ChangeRoomNameModal-test.tsx │ │ │ ├── ChatLongTapModal-test.tsx │ │ │ ├── ChatLongTapUserActions-test.tsx │ │ │ └── __snapshots__ │ │ │ │ └── ChangeRoomNameModal-test.tsx.snap │ │ ├── ChatMediaModal-test.tsx │ │ ├── DeleteDialog-test.tsx │ │ ├── Login │ │ │ ├── UserNameModal-test.tsx │ │ │ └── __snapshots__ │ │ │ │ └── UserNameModal-test.tsx.snap │ │ ├── Profile │ │ │ ├── ProfileModal-test.tsx │ │ │ └── __snapshots__ │ │ │ │ └── ProfileModal-test.tsx.snap │ │ ├── QR │ │ │ └── QRModal-test.tsx │ │ ├── ScanQrModal-test.tsx │ │ ├── TransactionModal │ │ │ ├── AssetItem-test.tsx │ │ │ ├── CoinsTransferList-test.tsx │ │ │ ├── ReportAndBlockButton-test.tsx │ │ │ ├── SendItem-test.tsx │ │ │ ├── TokensOrItemsTransfer-test.tsx │ │ │ ├── TransferModalButton-test.tsx │ │ │ └── __snapshots__ │ │ │ │ ├── AssetItem-test.tsx.snap │ │ │ │ ├── CoinsTransferList-test.tsx.snap │ │ │ │ ├── ReportAndBlockButton-test.tsx.snap │ │ │ │ ├── SendItem-test.tsx.snap │ │ │ │ └── TransferModalButton-test.tsx.snap │ │ └── __snapshots__ │ │ │ └── DeleteDialog-test.tsx.snap │ ├── Nft │ │ └── NftTransactionList-test.tsx │ ├── Profile │ │ ├── DocumentListItem-test.tsx │ │ └── __snapshots__ │ │ │ └── DocumentListItem-test.tsx.snap │ └── SecondaryHeader │ │ ├── SecondaryHeader-test.tsx │ │ └── __snapshots__ │ │ └── SecondaryHeader-test.tsx.snap ├── android │ ├── app │ │ ├── _BUCK │ │ ├── build.gradle │ │ ├── build_defs.bzl │ │ ├── debug.keystore │ │ ├── ethoraAndroidKeystore.jks │ │ ├── google-services.json │ │ ├── proguard-rules.pro │ │ ├── release │ │ │ └── output-metadata.json │ │ └── src │ │ │ ├── androidTest │ │ │ ├── DetoxTest.java │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── ethora │ │ │ │ └── DetoxTest.java │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── assets │ │ │ └── fonts │ │ │ │ ├── Montserrat-Bold.ttf │ │ │ │ ├── Montserrat-Light.ttf │ │ │ │ ├── Montserrat-Medium.ttf │ │ │ │ ├── Montserrat-Regular.ttf │ │ │ │ ├── Montserrat-SemiBold.ttf │ │ │ │ ├── Montserrat-Thin.ttf │ │ │ │ ├── Poppins-Black.ttf │ │ │ │ ├── Poppins-BlackItalic.ttf │ │ │ │ ├── Poppins-Bold.ttf │ │ │ │ ├── Poppins-BoldItalic.ttf │ │ │ │ ├── Poppins-ExtraBold.ttf │ │ │ │ ├── Poppins-ExtraBoldItalic.ttf │ │ │ │ ├── Poppins-ExtraLight.ttf │ │ │ │ ├── Poppins-ExtraLightItalic.ttf │ │ │ │ ├── Poppins-Italic.ttf │ │ │ │ ├── Poppins-Light.ttf │ │ │ │ ├── Poppins-LightItalic.ttf │ │ │ │ ├── Poppins-Medium.ttf │ │ │ │ ├── Poppins-MediumItalic.ttf │ │ │ │ ├── Poppins-Regular.ttf │ │ │ │ ├── Poppins-SemiBold.ttf │ │ │ │ ├── Poppins-SemiBoldItalic.ttf │ │ │ │ ├── Poppins-Thin.ttf │ │ │ │ ├── Poppins-ThinItalic.ttf │ │ │ │ └── VarelaRound-Regular.ttf │ │ │ ├── ic_launcher-playstore.png │ │ │ ├── java │ │ │ └── com │ │ │ │ └── ethora │ │ │ │ ├── MainActivity.java │ │ │ │ ├── MainApplication.java │ │ │ │ ├── Waveform.java │ │ │ │ ├── WaveformPackage.java │ │ │ │ └── newarchitecture │ │ │ │ ├── MainApplicationReactNativeHost.java │ │ │ │ ├── components │ │ │ │ └── MainComponentsRegistry.java │ │ │ │ └── modules │ │ │ │ └── MainApplicationTurboModuleManagerDelegate.java │ │ │ ├── jni │ │ │ ├── Android.mk │ │ │ ├── MainApplicationModuleProvider.cpp │ │ │ ├── MainApplicationModuleProvider.h │ │ │ ├── MainApplicationTurboModuleManagerDelegate.cpp │ │ │ ├── MainApplicationTurboModuleManagerDelegate.h │ │ │ ├── MainComponentsRegistry.cpp │ │ │ ├── MainComponentsRegistry.h │ │ │ └── OnLoad.cpp │ │ │ └── res │ │ │ ├── drawable-hdpi │ │ │ ├── bootsplash_logo.png │ │ │ └── splashscreen.png │ │ │ ├── drawable-mdpi │ │ │ ├── bootsplash_logo.png │ │ │ └── splashscreen.png │ │ │ ├── drawable-xhdpi │ │ │ ├── bootsplash_logo.png │ │ │ └── splashscreen.png │ │ │ ├── drawable-xxhdpi │ │ │ ├── bootsplash_logo.png │ │ │ └── splashscreen.png │ │ │ ├── drawable-xxxhdpi │ │ │ ├── bootsplash_logo.png │ │ │ └── splashscreen.png │ │ │ ├── drawable │ │ │ ├── launch_screen.png │ │ │ └── rn_edit_text_material.xml │ │ │ ├── layout │ │ │ └── launch_screen.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ └── ic_launcher.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_background.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_monochrome.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_background.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_monochrome.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_background.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_monochrome.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_background.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_monochrome.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_background.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_monochrome.png │ │ │ ├── raw │ │ │ ├── token1.mp3 │ │ │ ├── token3.mp3 │ │ │ ├── token5.mp3 │ │ │ └── token7.mp3 │ │ │ ├── values │ │ │ ├── colors.xml │ │ │ ├── ic_launcher_background.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ │ └── xml │ │ │ └── network_security_config.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── settings.gradle ├── app.json ├── assetsTransformer.js ├── babel.config.js ├── default.realm ├── default.realm.lock ├── default.realm.management │ ├── access_control.control.mx │ └── access_control.write.mx ├── docs │ ├── config.ts │ └── planning │ │ ├── configProposal.txt │ │ └── default.js ├── e2e │ ├── RegisterNewUser.test.js │ ├── createNewRoom.test.js │ ├── jest.config.js │ └── login.test.js ├── index.js ├── ios │ ├── File.swift │ ├── Podfile │ ├── Podfile.lock │ ├── RNWaveformManager.m │ ├── RNWaweform.swift │ ├── RTCWaveformModule.h │ ├── ethora-Bridging-Header.h │ ├── ethora.xcodeproj │ │ ├── project.pbxproj │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── ethora.xcscheme │ ├── ethora.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ ├── ethora │ │ ├── AppDelegate.h │ │ ├── AppDelegate.mm │ │ ├── GoogleService-Info.plist │ │ ├── Images.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── AppIcon-20@2x.png │ │ │ │ ├── AppIcon-20@2x~ipad.png │ │ │ │ ├── AppIcon-20@3x.png │ │ │ │ ├── AppIcon-20~ipad.png │ │ │ │ ├── AppIcon-29.png │ │ │ │ ├── AppIcon-29@2x.png │ │ │ │ ├── AppIcon-29@2x~ipad.png │ │ │ │ ├── AppIcon-29@3x.png │ │ │ │ ├── AppIcon-29~ipad.png │ │ │ │ ├── AppIcon-40@2x.png │ │ │ │ ├── AppIcon-40@2x~ipad.png │ │ │ │ ├── AppIcon-40@3x.png │ │ │ │ ├── AppIcon-40~ipad.png │ │ │ │ ├── AppIcon-60@2x~car.png │ │ │ │ ├── AppIcon-60@3x~car.png │ │ │ │ ├── AppIcon-83.5@2x~ipad.png │ │ │ │ ├── AppIcon@2x.png │ │ │ │ ├── AppIcon@2x~ipad.png │ │ │ │ ├── AppIcon@3x.png │ │ │ │ ├── AppIcon~ios-marketing.png │ │ │ │ ├── AppIcon~ipad.png │ │ │ │ └── Contents.json │ │ │ ├── Contents.json │ │ │ ├── Ethora Full Logo.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Ethora Full Logo-1.png │ │ │ │ ├── Ethora Full Logo-2.png │ │ │ │ └── Ethora Full Logo.png │ │ │ ├── ScrollGroup1.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── ScrollGroup1-1.png │ │ │ │ ├── ScrollGroup1-2.png │ │ │ │ └── ScrollGroup1.png │ │ │ └── Splash screen.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── Splash screen.png │ │ │ │ ├── Splash screen@2x.png │ │ │ │ └── Splash screen@3x.png │ │ ├── Info.plist │ │ ├── LaunchScreen.storyboard │ │ ├── ethora.entitlements │ │ └── main.m │ └── ethoraTests │ │ ├── Info.plist │ │ └── ethoraTests.m ├── jest.setup.js ├── metro.config.js ├── package-lock.json ├── package.json ├── react-native.config.js ├── release-notes.md ├── shim.js ├── src │ ├── App.tsx │ ├── assets │ │ ├── acme.webp │ │ ├── appleWhite.png │ │ ├── assets.d.ts │ │ ├── chatEmpty.png │ │ ├── coin.png │ │ ├── fileIcon.png │ │ ├── fonts │ │ │ ├── Montserrat │ │ │ │ ├── Montserrat-Bold.ttf │ │ │ │ ├── Montserrat-Light.ttf │ │ │ │ ├── Montserrat-Medium.ttf │ │ │ │ ├── Montserrat-Regular.ttf │ │ │ │ ├── Montserrat-SemiBold.ttf │ │ │ │ └── Montserrat-Thin.ttf │ │ │ ├── Poppins-Black.ttf │ │ │ ├── Poppins-BlackItalic.ttf │ │ │ ├── Poppins-Bold.ttf │ │ │ ├── Poppins-BoldItalic.ttf │ │ │ ├── Poppins-ExtraBold.ttf │ │ │ ├── Poppins-ExtraBoldItalic.ttf │ │ │ ├── Poppins-ExtraLight.ttf │ │ │ ├── Poppins-ExtraLightItalic.ttf │ │ │ ├── Poppins-Italic.ttf │ │ │ ├── Poppins-Light.ttf │ │ │ ├── Poppins-LightItalic.ttf │ │ │ ├── Poppins-Medium.ttf │ │ │ ├── Poppins-MediumItalic.ttf │ │ │ ├── Poppins-Regular.ttf │ │ │ ├── Poppins-SemiBold.ttf │ │ │ ├── Poppins-SemiBoldItalic.ttf │ │ │ ├── Poppins-Thin.ttf │ │ │ ├── Poppins-ThinItalic.ttf │ │ │ └── VarelaRound │ │ │ │ └── VarelaRound-Regular.ttf │ │ ├── google-logo.png │ │ ├── login_background.png │ │ ├── logo.png │ │ ├── logo.svg │ │ ├── metamask.svg │ │ ├── poweredBy.png │ │ ├── splash.png │ │ ├── transactions-empty.png │ │ └── tutorials │ │ │ ├── slide1Img1.png │ │ │ ├── slide2Img1.png │ │ │ ├── slide2Img2.png │ │ │ ├── slide2Img3.png │ │ │ ├── slide3Img1.png │ │ │ ├── slide3Img2.png │ │ │ ├── slide4Img1.png │ │ │ └── slide4Img2.png │ ├── components │ │ ├── Account │ │ │ ├── EmailListItem.tsx │ │ │ └── RenderEmailList.tsx │ │ ├── AudioPlayer │ │ │ ├── AudioPlayer.tsx │ │ │ └── PlayButton.tsx │ │ ├── Button.tsx │ │ ├── Buttons │ │ │ └── SocialButton.tsx │ │ ├── Chat │ │ │ ├── AudioMessage.tsx │ │ │ ├── AudioSendButton.tsx │ │ │ ├── ChatBackgroundCard.tsx │ │ │ ├── ChatContainer.tsx │ │ │ ├── ChatDetails │ │ │ │ ├── ChatDetailHeader.tsx │ │ │ │ ├── ChatDetailMembersList.tsx │ │ │ │ └── RoomDetailsCard.tsx │ │ │ ├── Composer.tsx │ │ │ ├── CreateNewChatButton.tsx │ │ │ ├── FileMessage.tsx │ │ │ ├── ImageMessage.tsx │ │ │ ├── MessageBody.tsx │ │ │ ├── MessageBubble.tsx │ │ │ ├── MessageSize.tsx │ │ │ ├── MessageText.tsx │ │ │ ├── MetaNavigation.tsx │ │ │ ├── PdfMessage.tsx │ │ │ ├── QuickReplies.tsx │ │ │ ├── RenderChatFooter.tsx │ │ │ ├── RenderDay.tsx │ │ │ └── VideoMessage.tsx │ │ ├── Login │ │ │ ├── CreateAccountButton.tsx │ │ │ ├── GoogleSignInButton.tsx │ │ │ ├── RegisterExternalWalletModal.tsx │ │ │ ├── RegularLoginLabel.tsx │ │ │ └── SocialButtons.tsx │ │ ├── MainHeader │ │ │ ├── HeaderAppLogo.tsx │ │ │ ├── HeaderAppTitle.tsx │ │ │ ├── HeaderBalanceButton.tsx │ │ │ ├── HeaderMenu.tsx │ │ │ ├── MainHeader.tsx │ │ │ └── SubMenu.tsx │ │ ├── Modals │ │ │ ├── Account │ │ │ │ └── AddNewEmail.tsx │ │ │ ├── Chat │ │ │ │ ├── ChangeRoomDescriptionModal.tsx │ │ │ │ ├── ChangeRoomNameModal.tsx │ │ │ │ ├── ChatLongTapModal.tsx │ │ │ │ ├── ChatLongTapUserActions.tsx │ │ │ │ └── types.ts │ │ │ ├── ChatMediaModal.tsx │ │ │ ├── DeleteDialog.tsx │ │ │ ├── Login │ │ │ │ └── UserNameModal.tsx │ │ │ ├── Profile │ │ │ │ └── ProfileModal.tsx │ │ │ ├── QR │ │ │ │ └── QRModal.tsx │ │ │ ├── ScanQrModal.tsx │ │ │ └── TransactionModal │ │ │ │ ├── AssetItem.tsx │ │ │ │ ├── CoinsTransferList.tsx │ │ │ │ ├── ReportAndBlockButton.tsx │ │ │ │ ├── SendItem.tsx │ │ │ │ ├── TokensOrItemsTransfer.tsx │ │ │ │ └── TransferModalButton.tsx │ │ ├── Nft │ │ │ └── NftTransactionList.tsx │ │ ├── NftMediaModal.tsx │ │ ├── PdfViewer.tsx │ │ ├── PrivacyPolicy.tsx │ │ ├── Profile │ │ │ ├── DocumentListItem.tsx │ │ │ ├── MainProfile.tsx │ │ │ ├── ProfileTab.tsx │ │ │ ├── ProfileTabs.tsx │ │ │ ├── UserProfileBlock.tsx │ │ │ ├── UserProfileInitials.tsx │ │ │ └── UserProfileMainTabs.tsx │ │ ├── QRCodeGenerator.tsx │ │ ├── Recorder │ │ │ └── RecordingSecondsCounter.tsx │ │ ├── RoomList │ │ │ ├── ChatDragItem.tsx │ │ │ ├── FloatingActionButton.tsx │ │ │ ├── LeftAndRightDragAction.tsx │ │ │ ├── RoomList.tsx │ │ │ ├── RoomListItem.tsx │ │ │ ├── RoomListItemIcon.tsx │ │ │ └── RoomsTabBar.tsx │ │ ├── SecondaryHeader │ │ │ └── SecondaryHeader.tsx │ │ ├── Separator.tsx │ │ ├── Toast │ │ │ └── toast.ts │ │ ├── Transactions │ │ │ ├── NftListItem.tsx │ │ │ ├── NftTransactionItem.tsx │ │ │ ├── RenderCoin.tsx │ │ │ ├── TransactionFilter.tsx │ │ │ ├── TransactionsList.tsx │ │ │ ├── TransactionsListItem.tsx │ │ │ └── TransactionsListItemDate.tsx │ │ └── realmModels │ │ │ ├── allSchemas.ts │ │ │ ├── chatList.ts │ │ │ ├── messages.ts │ │ │ └── transaction.ts │ ├── config │ │ ├── apiService.ts │ │ └── routesConstants.ts │ ├── constants │ │ ├── asyncStorageConstants.ts │ │ ├── botTypes.ts │ │ ├── messageColors.js │ │ ├── mimeTypes.ts │ │ ├── modalTypes.ts │ │ ├── realmConstants.ts │ │ ├── routes.ts │ │ ├── socialLoginConstants.ts │ │ ├── subMenuTitle.ts │ │ ├── transactionsFilter.ts │ │ └── walletConnect.ts │ ├── declarations.d.ts │ ├── helpers │ │ ├── RoomList │ │ │ └── renameRoom.ts │ │ ├── aplha.ts │ │ ├── banSystemMessage.ts │ │ ├── cache │ │ │ ├── asyncStorageGetItem.ts │ │ │ ├── asyncStorageSetItem.ts │ │ │ └── setAndGetAsyncStore.ts │ │ ├── chat │ │ │ ├── Index.ts │ │ │ ├── chatLinkpattern.ts │ │ │ ├── chatUtils.ts │ │ │ ├── checkIsDefaultChat.ts │ │ │ ├── createMessageObject.ts │ │ │ ├── createPrivateChat.ts │ │ │ ├── formatBytes.ts │ │ │ ├── formatDate.ts │ │ │ ├── inputTypes.ts │ │ │ ├── inputUtils.ts │ │ │ ├── openChatFromChatLink.ts │ │ │ ├── playCoinSound.ts │ │ │ └── spliteChatJid.ts │ │ ├── checkMimetypes.ts │ │ ├── decryptData.ts │ │ ├── downloadFile.ts │ │ ├── formatBigNumber.ts │ │ ├── generateDocumentLink.ts │ │ ├── generateProfileLink.ts │ │ ├── getYoutubeMetadata.ts │ │ ├── isAddress.ts │ │ ├── login │ │ │ └── socialLoginHandle.ts │ │ ├── normalizeData.ts │ │ ├── parseLink.ts │ │ ├── pushNotifications.ts │ │ ├── signMessage.tsx │ │ ├── systemMessage.ts │ │ ├── transactions │ │ │ └── compareTransactionsDate.ts │ │ ├── underscoreLogic.ts │ │ ├── uploadFiles.ts │ │ ├── weiToNormalUnits.ts │ │ └── wrapMessage.ts │ ├── hooks │ │ ├── useDebounce.ts │ │ └── useRegisterModal.ts │ ├── imports.d.ts │ ├── navigation │ │ ├── AuthStack.tsx │ │ ├── HomeStack.tsx │ │ ├── RootStack.tsx │ │ ├── routes.ts │ │ └── types.ts │ ├── screens │ │ ├── Account │ │ │ ├── AccountScreen.tsx │ │ │ ├── Authentication.tsx │ │ │ ├── CoinPurchaseScreen.tsx │ │ │ ├── EnterInviteCodeScreen.tsx │ │ │ ├── InviteFriendsScreen.tsx │ │ │ └── ShareInviteLinkScreen.tsx │ │ ├── Actions │ │ │ ├── MintScreen.tsx │ │ │ ├── ScanScreen.tsx │ │ │ └── UploadDocumentsScreen.tsx │ │ ├── Chat │ │ │ ├── ChangeBackgroundScreen.tsx │ │ │ ├── ChatDetailsScreen.tsx │ │ │ ├── ChatExperimental.tsx │ │ │ ├── ChatScreen.tsx │ │ │ ├── NewChatScreen.tsx │ │ │ ├── RoomListScreen.tsx │ │ │ └── ThreadScreen.tsx │ │ ├── EnterInviteCodeScreen.tsx │ │ ├── Login │ │ │ ├── LoginScreen.tsx │ │ │ ├── RegisterScreen.tsx │ │ │ ├── RegularLoginScreen.tsx │ │ │ └── ResetPasswordScreen.tsx │ │ ├── MintScreen.tsx │ │ ├── Privacy │ │ │ ├── Blocking.tsx │ │ │ ├── DocumentShareAdd.tsx │ │ │ ├── DocumentShareManage.tsx │ │ │ ├── DocumentShares.tsx │ │ │ ├── ManageData.tsx │ │ │ ├── PrivacyAndDataScreen.tsx │ │ │ ├── ProfileShare.tsx │ │ │ ├── ProfileShareAdd.tsx │ │ │ ├── ProfileShareManage.tsx │ │ │ └── Visibility.tsx │ │ ├── Profile │ │ │ ├── DocumentHistoryScreen.tsx │ │ │ ├── NftItemHistoryScreen.tsx │ │ │ ├── OtherUserProfileScreen.tsx │ │ │ ├── ProfileScreen.tsx │ │ │ └── TransactionsScreen.tsx │ │ ├── System │ │ │ └── DebugScreen.tsx │ │ └── UploadDocumentsScreen.tsx │ ├── stores │ │ ├── accountStore.ts │ │ ├── apiStore.ts │ │ ├── chatStore.ts │ │ ├── context.tsx │ │ ├── debugStore.ts │ │ ├── loginStore.ts │ │ ├── otherUserStore.ts │ │ ├── types.ts │ │ └── walletStore.ts │ └── xmpp │ │ ├── stanzas.ts │ │ └── xmppConstants.ts ├── tsconfig.json └── yarn.lock ├── client-web-install ├── .eslintrc.cjs ├── .gitignore ├── index.html ├── package-lock.json ├── package.json ├── postcss.config.js ├── public │ └── vite.svg ├── src │ ├── App.css │ ├── Layouts │ │ └── Layout.tsx │ ├── Router.tsx │ ├── api │ │ └── api.ts │ ├── assets │ │ └── logo.png │ ├── components │ │ ├── Header.tsx │ │ └── Input.tsx │ ├── index.css │ ├── main.tsx │ ├── pages │ │ ├── ErrorPage.tsx │ │ └── Install.tsx │ └── vite-env.d.ts ├── tailwind.config.js ├── tsconfig.json ├── tsconfig.node.json ├── vite.config.ts └── yarn.lock ├── client-web ├── .dockerignore ├── .env-example ├── .eslintignore ├── .eslintrc.json ├── .gitignore ├── .prettierrc.js ├── .routes ├── Makefile ├── README.md ├── analyze.js ├── default.conf ├── docker-compose.yml ├── dockerfolder │ └── Dockerfile ├── index.html ├── init.sh ├── package-lock.json ├── package.json ├── public │ ├── coin.png │ ├── favicon.ico │ ├── favicon.png │ ├── firebase-messaging-sw.js │ ├── images │ │ ├── 1_Final_2.png │ │ ├── 2_Final_2.png │ │ ├── 3_Final_2.png │ │ ├── 4_Final_2.png │ │ ├── 5_Final_2.png │ │ ├── 6_Final_2.png │ │ ├── Builder-demo.gif │ │ ├── android-icon-36x36.png │ │ ├── apple-icon-57x57.png │ │ ├── apple-icon.png │ │ ├── dpp.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon.ico │ │ ├── robot.png │ │ ├── user.png │ │ └── waves4.svg │ ├── logo192.png │ ├── logo512.png │ ├── manifest.json │ ├── robots.txt │ └── tokenSounds │ │ ├── token1.mp3 │ │ ├── token3.mp3 │ │ ├── token5.mp3 │ │ └── token7.mp3 ├── src │ ├── App.tsx │ ├── api │ │ └── interceptors.ts │ ├── assets │ │ ├── countries.json │ │ ├── empty_dashboard.svg │ │ └── images │ │ │ ├── 1_Final_2.png │ │ │ ├── 2_Final_2.png │ │ │ ├── 3_Final_2.png │ │ │ ├── 4_Final_2.png │ │ │ ├── 5_Final_2.png │ │ │ ├── 6_Final_2.png │ │ │ ├── android-icon-36x36.png │ │ │ ├── apple-icon-57x57.png │ │ │ ├── apple-icon.png │ │ │ ├── coin.png │ │ │ ├── def-ava.png │ │ │ ├── dpp.png │ │ │ ├── favicon-16x16.png │ │ │ ├── favicon-32x32.png │ │ │ ├── favicon.ico │ │ │ ├── login_background.png │ │ │ ├── logo.png │ │ │ ├── profilepic.png │ │ │ ├── robot.png │ │ │ ├── user.png │ │ │ └── waves4.png │ ├── components │ │ ├── AppBuilder │ │ │ ├── ActionStrip.tsx │ │ │ ├── AppDetails.tsx │ │ │ └── AppMock.tsx │ │ ├── AppTopNav.tsx │ │ ├── AppTopNavAuth.tsx │ │ ├── AppTopNavOwner.tsx │ │ ├── AppsTable │ │ │ ├── AppsTableHead.tsx │ │ │ └── Loader.tsx │ │ ├── AuthRoute.tsx │ │ ├── BlocksTable.tsx │ │ ├── Chat │ │ │ ├── ChatAudioRecorder.tsx │ │ │ ├── ChatMediaModal.tsx │ │ │ ├── ChatTransferDialog.tsx │ │ │ ├── LeaveRoomButton.tsx │ │ │ ├── Messages │ │ │ │ ├── Message.tsx │ │ │ │ ├── MessageDefault.tsx │ │ │ │ └── SystemMessage.tsx │ │ │ └── Threads │ │ │ │ ├── CustomMessageInput.tsx │ │ │ │ └── ThreadContainer.tsx │ │ ├── DeleteDialog.tsx │ │ ├── EditAcl.tsx │ │ ├── ExplorerBlocks.tsx │ │ ├── ExplorerChart.tsx │ │ ├── ForgotPasswordModal.tsx │ │ ├── FullPageSpinner.tsx │ │ ├── HeaderWarningMessage.tsx │ │ ├── Menu.tsx │ │ ├── MetaNavigation │ │ │ ├── CompassItem.tsx │ │ │ ├── MetaHeader.tsx │ │ │ └── MetaNavigation.tsx │ │ ├── NoDataImage.scss │ │ ├── NoDataImage.tsx │ │ ├── OwnerAlert.tsx │ │ ├── RegisterCompanyModal.tsx │ │ ├── Snackbar.tsx │ │ ├── UsersActionModal.tsx │ │ ├── UsersTable │ │ │ ├── Head.tsx │ │ │ ├── Toolbar.tsx │ │ │ ├── UsersTable.tsx │ │ │ └── UsersTableRow.tsx │ │ └── icons │ │ │ └── BezierCurve.tsx │ ├── config.ts │ ├── config │ │ └── config.ts │ ├── connector.ts │ ├── constants │ │ └── index.ts │ ├── context │ │ └── SnackbarContext.tsx │ ├── env.d.ts │ ├── helpers │ │ └── chat │ │ │ └── createPrivateChat.ts │ ├── hooks │ │ └── useDebounce.tsx │ ├── http.ts │ ├── index.css │ ├── index.tsx │ ├── logo.svg │ ├── pages │ │ ├── AppBuilder │ │ │ └── AppBuilder.tsx │ │ ├── AppEdit │ │ │ ├── AppEdit.tsx │ │ │ ├── Appearance.tsx │ │ │ ├── Backend.tsx │ │ │ ├── Services.tsx │ │ │ └── UserDefaults.tsx │ │ ├── ChangeTempPassword │ │ │ └── ChangeTempPassword.tsx │ │ ├── ChatInRoom │ │ │ ├── Chat.tsx │ │ │ ├── index.tsx │ │ │ └── theme │ │ │ │ └── default │ │ │ │ ├── _variables.scss │ │ │ │ ├── components │ │ │ │ ├── _avatar-group.scss │ │ │ │ ├── _avatar.scss │ │ │ │ ├── _buttons.scss │ │ │ │ ├── _chat-container.scss │ │ │ │ ├── _conversation-header.scss │ │ │ │ ├── _conversation-list.scss │ │ │ │ ├── _conversation.scss │ │ │ │ ├── _expansion-panel.scss │ │ │ │ ├── _input-toolbox.scss │ │ │ │ ├── _loader.scss │ │ │ │ ├── _main-container.scss │ │ │ │ ├── _message-group.scss │ │ │ │ ├── _message-input.scss │ │ │ │ ├── _message-list.scss │ │ │ │ ├── _message-separator.scss │ │ │ │ ├── _message.scss │ │ │ │ ├── _overlay.scss │ │ │ │ ├── _perfect-scrollbar.scss │ │ │ │ ├── _search.scss │ │ │ │ ├── _sidebar.scss │ │ │ │ ├── _status-list.scss │ │ │ │ ├── _status.scss │ │ │ │ └── _typing-indicator.scss │ │ │ │ ├── exports.scss │ │ │ │ ├── helpers │ │ │ │ ├── _functions.scss │ │ │ │ └── _mixins.scss │ │ │ │ └── main.scss │ │ ├── ChatRoomDetails │ │ │ ├── ChangeBackground.tsx │ │ │ ├── ChangeRoomInfoModal.tsx │ │ │ ├── ChatAvatar.tsx │ │ │ ├── ChatDetailCard.tsx │ │ │ ├── MembersList.tsx │ │ │ └── index.tsx │ │ ├── CreateApp │ │ │ └── index.tsx │ │ ├── Dashboard │ │ │ ├── AppsSelect.tsx │ │ │ ├── Contracts.tsx │ │ │ ├── Graph.scss │ │ │ ├── NetworkHealth.tsx │ │ │ ├── Peers.tsx │ │ │ ├── TokensGraph.tsx │ │ │ ├── TransactionsGraph.tsx │ │ │ ├── UsersGraph.tsx │ │ │ └── index.tsx │ │ ├── Explorer │ │ │ ├── BlockDetails.tsx │ │ │ ├── Blocks.tsx │ │ │ ├── Explorer.tsx │ │ │ ├── TransactionAddressDetails.tsx │ │ │ └── TransactionDetails.tsx │ │ ├── Home │ │ │ └── Home.tsx │ │ ├── MintNft │ │ │ └── MintNft.tsx │ │ ├── NewChat │ │ │ └── NewChat.tsx │ │ ├── Organizations │ │ │ └── Organizations.tsx │ │ ├── Owner │ │ │ ├── Apps.tsx │ │ │ ├── DeletAppModal.tsx │ │ │ ├── EditAppModal.tsx │ │ │ ├── NewAppModal.tsx │ │ │ ├── NewUserModal.tsx │ │ │ ├── RotateModal.tsx │ │ │ ├── Users.tsx │ │ │ └── index.tsx │ │ ├── Payments │ │ │ ├── Subscriptions.tsx │ │ │ ├── index.tsx │ │ │ └── withStripe.tsx │ │ ├── Privacy │ │ │ ├── AddDocumentTabPanel.tsx │ │ │ ├── AddProfileTabPanel.tsx │ │ │ ├── Blocking.tsx │ │ │ ├── DocumentsShareTab.tsx │ │ │ ├── ManageData.tsx │ │ │ ├── ManageDocumentShareTabPanel.tsx │ │ │ ├── ManageProfileTabPanel.tsx │ │ │ ├── Privacy.tsx │ │ │ ├── ProfileShareTab.tsx │ │ │ ├── QRSection.tsx │ │ │ └── VisibilityTab.tsx │ │ ├── Profile │ │ │ ├── ChangeImage.tsx │ │ │ ├── DocumentsCreateModal.tsx │ │ │ ├── DocumentsTable.tsx │ │ │ ├── EditProfileModal.tsx │ │ │ ├── ItemsTable.tsx │ │ │ ├── MyProfile.tsx │ │ │ ├── NewItemModal.tsx │ │ │ ├── OtherItemsTable.tsx │ │ │ ├── OtherProfile.tsx │ │ │ ├── QrModal.tsx │ │ │ ├── TransactionsTable.tsx │ │ │ ├── TransferItemsModal.tsx │ │ │ ├── UserCard.tsx │ │ │ ├── index.tsx │ │ │ └── types.ts │ │ ├── Referrals │ │ │ └── Referrals.tsx │ │ ├── ResetPassword │ │ │ └── ResetPassword.tsx │ │ ├── Routes.tsx │ │ ├── Signon │ │ │ ├── EmailModal.tsx │ │ │ ├── EmailSignInForm.tsx │ │ │ ├── EmailSignUpForm.tsx │ │ │ ├── MetamaskModal.tsx │ │ │ ├── OwnerLogin.tsx │ │ │ ├── OwnerRegistrationModal.tsx │ │ │ ├── RegularSignIn.tsx │ │ │ ├── Tnc.scss │ │ │ ├── Tnc.tsx │ │ │ ├── UsernameModal.tsx │ │ │ ├── UsernameSignInForm.tsx │ │ │ ├── UsernameSignUpForm.tsx │ │ │ └── index.tsx │ │ ├── Statistics │ │ │ └── index.tsx │ │ ├── Transactions │ │ │ ├── Provenance.tsx │ │ │ └── Transactions.tsx │ │ ├── UploadDocument │ │ │ └── UploadDocument.tsx │ │ └── UsersPage │ │ │ └── index.tsx │ ├── react-app-env.d.ts │ ├── reportWebVitals.ts │ ├── service-worker.ts │ ├── serviceWorkerRegistration.ts │ ├── services │ │ ├── firebase.ts │ │ └── firebaseMessaging.ts │ ├── setupTests.ts │ ├── store │ │ └── index.ts │ ├── utils │ │ ├── createMessage.ts │ │ ├── getUniqueTagsFromUsers.ts │ │ ├── history.ts │ │ ├── index.ts │ │ ├── mimetypes.ts │ │ ├── playCoinSound.ts │ │ ├── throttle.ts │ │ └── walletManipulation.ts │ ├── xmpp.ts │ └── xmppHandler.ts ├── tsconfig.json ├── tsconfig.node.json ├── vite.config.ts └── yarn.lock ├── ethereum-contracts ├── .gitignore ├── README.md ├── contracts │ ├── Doc.sol │ ├── EthoraCoin.sol │ ├── EthoraNFMT.sol │ ├── Just1155.sol │ ├── Lock.sol │ ├── Nfmt.sol │ ├── NfmtL1.sol │ └── NftLock.sol ├── hardhat.config.js ├── package-lock.json ├── package.json ├── scripts │ └── deploy.js └── test │ ├── Lock.js │ └── NftLock.js ├── ethora-polygon-next ├── .env.example ├── .eslintrc.json ├── .gitignore ├── README.md ├── next.config.js ├── package-lock.json ├── package.json ├── postcss.config.js ├── public │ ├── favicon.ico │ ├── next.svg │ ├── thirteen.svg │ └── vercel.svg ├── src │ ├── assets │ │ └── imgs │ │ │ └── logo.png │ ├── components │ │ ├── AllScreenLoader.tsx │ │ ├── AppFooter.tsx │ │ ├── AppHeader.tsx │ │ ├── AuthGuard.tsx │ │ ├── Earning.tsx │ │ ├── ImagePick.tsx │ │ ├── NfmtContractItem.tsx │ │ ├── layout.tsx │ │ └── view │ │ │ └── Auth.tsx │ ├── constants │ │ ├── ABI │ │ │ ├── EthoraCoin.json │ │ │ └── EthoraNfmt.json │ │ ├── config.ts │ │ └── nfmt.ts │ ├── context │ │ └── Web3Provider.tsx │ ├── hooks │ │ └── useSwal.ts │ ├── http.ts │ ├── pages │ │ ├── _app.tsx │ │ ├── _document.tsx │ │ ├── api │ │ │ └── hello.ts │ │ ├── claim │ │ │ └── index.tsx │ │ ├── deploy-collection.tsx │ │ ├── index.tsx │ │ ├── profile.tsx │ │ └── transfers.tsx │ ├── store │ │ ├── index.ts │ │ └── slices │ │ │ ├── appSlice.ts │ │ │ ├── authSlice.ts │ │ │ ├── createCartSlice.ts │ │ │ ├── createProductSlice.ts │ │ │ └── userSlice.ts │ └── styles │ │ ├── Home.module.css │ │ └── globals.css ├── tailwind.config.js ├── tsconfig.json └── yarn.lock ├── ethora-polygon-server ├── .gitignore ├── README.md ├── docker-compose.yml ├── package-lock.json ├── package.json ├── src │ ├── config.ts │ ├── contracts │ │ ├── ethoraCoin.ts │ │ └── ethoraNFMT.ts │ ├── db │ │ ├── dbConnect.ts │ │ └── models │ │ │ ├── nfmt.ts │ │ │ └── user.ts │ ├── handlers │ │ ├── afterDeployHandler.ts │ │ ├── getProfileHandler.ts │ │ ├── preDeployNfmt.ts │ │ └── updateProfile.ts │ ├── index.ts │ ├── middleware │ │ ├── auth.ts │ │ └── error.ts │ ├── router │ │ └── index.ts │ ├── services │ │ └── pinata.ts │ └── utils │ │ ├── mock │ │ ├── createMetadata.ts │ │ ├── images │ │ │ ├── contract1.jpg │ │ │ ├── contract2.jpg │ │ │ └── contract3.jpg │ │ ├── json │ │ │ ├── contract1.json │ │ │ ├── contract2.json │ │ │ ├── contract22.json │ │ │ └── contract3.json │ │ ├── mock.ts │ │ └── nfmtContract.ts │ │ ├── uploadToIpfs.ts │ │ └── xmpp.ts └── tsconfig.json └── xmpp-web-debug ├── .env.example ├── .gitignore ├── README.md ├── package-lock.json ├── package.json ├── public ├── favicon.ico ├── index.html ├── logo192.png ├── logo512.png ├── manifest.json └── robots.txt └── src ├── App.css ├── App.js ├── App.test.js ├── XmppService.js ├── components ├── AppNav.jsx ├── AppNav.module.css ├── Debug.js ├── Register.js └── RoomConfig.js ├── constants.js ├── index.css ├── index.js ├── logo.svg ├── pages └── ChatPage │ ├── ChatPage.jsx │ └── ChatPage.module.css ├── reportWebVitals.js ├── setupTests.js ├── store ├── createChatSlice.js ├── createFishSlice.js ├── createUserSlice.js └── index.js ├── utils └── admin.js └── xmpp └── stanzaHandlers └── nsGetrooms.ts /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/.DS_Store -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | xmpp-web-debug/node_modules 2 | client-web/build -------------------------------------------------------------------------------- /api/index.js: -------------------------------------------------------------------------------- 1 | const swaggerJsDoc = require("swagger-jsdoc"); 2 | const swaggerUi = require("swagger-ui-express"); 3 | 4 | const swaggerOptions = require("./swaggerOptions") 5 | 6 | const swaggerDocs = swaggerJsDoc(swaggerOptions); 7 | 8 | const useSwagger = (app, swaggerPath = '/api-docs') => { 9 | app.use(swaggerPath, swaggerUi.serve, swaggerUi.setup(swaggerDocs)) 10 | } 11 | 12 | module.exports = useSwagger 13 | -------------------------------------------------------------------------------- /bots/autoResponder/.env.example: -------------------------------------------------------------------------------- 1 | TYPE= 2 | #--- < Main data * > --- 3 | BOT_ADDRESS= 4 | CONFERENCE_ADDRESS= 5 | APP_USERNAME= 6 | APP_PASSWORD= 7 | DEFAULT_ROOM= 8 | API_URL= 9 | #--- < Bot information > --- 10 | FIRST_NAME= 11 | LAST_NAME= 12 | PHOTO_URL= 13 | TOKEN_NAME='' 14 | PRESENCE_WAIT= 15 | #--- < Database > --- 16 | MONGO_USERNAME= 17 | MONGO_PASSWORD= 18 | MONGO_HOSTNAME= 19 | MONGO_PORT= 20 | MONGO_DB= 21 | #--- < Settings * > --- 22 | PRESENCE= 23 | INVITATION= 24 | #--- < Application token * > --- 25 | TOKEN='' 26 | -------------------------------------------------------------------------------- /bots/autoResponder/database/dataBase.js: -------------------------------------------------------------------------------- 1 | import mongoose from "mongoose"; 2 | 3 | const url = `mongodb://${process.env.MONGO_USERNAME}:${process.env.MONGO_PASSWORD}@${process.env.MONGO_HOSTNAME}:${process.env.MONGO_PORT}/${process.env.MONGO_DB}?authSource=admin`; 4 | 5 | export const connectToDb = async () => { 6 | return mongoose.connect(url, {useNewUrlParser: true}); 7 | } -------------------------------------------------------------------------------- /bots/autoResponder/database/models/rooms.js: -------------------------------------------------------------------------------- 1 | import mongoose from "mongoose"; 2 | 3 | const Schema = mongoose.Schema; 4 | 5 | const Rooms = new Schema({ 6 | address: {type: String, required: true, index: true, unique: true}, 7 | bot_name : {type: String}, 8 | date_added: { type: Date, default: Date.now} 9 | }); 10 | 11 | export const Room = mongoose.model('Rooms', Rooms); -------------------------------------------------------------------------------- /bots/autoResponder/handlers/errors.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const requestError = (data, request, error) =>{ 5 | console.log(request+' || Error: ', error); 6 | return sendMessage( 7 | data, 8 | messages.errors.requestError, 9 | 'message', 10 | false, 11 | 0, 12 | ); 13 | } -------------------------------------------------------------------------------- /bots/autoResponder/handlers/helloMessage.js: -------------------------------------------------------------------------------- 1 | import {getUserRooms} from "../actions.js"; 2 | 3 | export const presenceMessageHandler = (data) => { 4 | console.log('=> presenceMessageHandler || Message received from ', data.userJID, data.message); 5 | getUserRooms(data); 6 | } -------------------------------------------------------------------------------- /bots/autoResponder/handlers/help.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const helpHandler = (data) => { 5 | console.log('=> helpHandler | Message received from ', data.userJID, data.message); 6 | 7 | return sendMessage( 8 | data, 9 | messages.exampleBotMessage.helpMessage, 10 | 'message', 11 | false, 12 | 0, 13 | ); 14 | 15 | } -------------------------------------------------------------------------------- /bots/autoResponder/handlers/leave.js: -------------------------------------------------------------------------------- 1 | import {sendMessage, userSteps} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const leaveHandler = (data) => { 5 | console.log('=> leaveHandler | Message received from ', data.userJID, data.message); 6 | userSteps('setStep', data.userJID, 1); 7 | 8 | return sendMessage( 9 | data, 10 | messages.exampleBotMessage.leaveMessage, 11 | 'message', 12 | false, 13 | 0, 14 | ); 15 | } -------------------------------------------------------------------------------- /bots/autoResponder/handlers/test.js: -------------------------------------------------------------------------------- 1 | import {getUserRooms, sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const testHandler = (data) => { 5 | console.log('=> Message received from ', data.userJID, data.message); 6 | sendMessage( 7 | data, 8 | 'get rooms', 9 | 'message', 10 | false, 11 | 0, 12 | ); 13 | } -------------------------------------------------------------------------------- /bots/autoResponder/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "module", 3 | "scripts": { 4 | "start": "node -r dotenv/config client.js dotenv_config_path=.env.production", 5 | "dev": "node -r dotenv/config client.js dotenv_config_path=.env.development" 6 | }, 7 | "dependencies": { 8 | "@xmpp/client": "^0.13.1", 9 | "@xmpp/debug": "^0.13.0", 10 | "axios": "^0.27.2", 11 | "dotenv": "^16.0.1", 12 | "ethers": "^5.6.9", 13 | "mongoose": "^6.3.8" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /bots/botTemplate/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | /lib/ 3 | -------------------------------------------------------------------------------- /bots/botTemplate/bots/create-bot/.gitignore: -------------------------------------------------------------------------------- 1 | /.env 2 | /node_modules 3 | /lib/ 4 | -------------------------------------------------------------------------------- /bots/botTemplate/bots/create-bot/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "create-bot", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "dev": "NODE_PATH=. nodemon --watch 'src/**/*.ts' --exec 'ts-node' ./src/test.ts", 8 | "build": "tsc" 9 | }, 10 | "author": "Dappros", 11 | "license": "ISC", 12 | "dependencies": { 13 | "dotenv": "^16.0.3", 14 | "web3": "^1.9.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /bots/botTemplate/bots/create-bot/src/config/IConfig.ts: -------------------------------------------------------------------------------- 1 | export interface IConfigData { 2 | username: string; 3 | password: string; 4 | token: string; 5 | avatar: string; 6 | rooms: string[]; 7 | } 8 | 9 | export interface IBotInit { 10 | username: string; 11 | password: string; 12 | tokenJWT: string; 13 | botName: string; 14 | botImg: string; 15 | useTyping: boolean; 16 | useNameInMsg: boolean; 17 | connectionRooms: string[]; 18 | } 19 | 20 | export interface IConfig { 21 | get getConfigData(): IConfigData; 22 | get getBotInitData(): IBotInit; 23 | } -------------------------------------------------------------------------------- /bots/botTemplate/bots/create-bot/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2017", 4 | "module": "commonjs", 5 | "outDir": "./lib", 6 | "rootDir": "./src", 7 | "baseUrl": "./", 8 | "esModuleInterop": true, 9 | "forceConsistentCasingInFileNames": true, 10 | }, 11 | "include": ["./src/**/*"] 12 | } -------------------------------------------------------------------------------- /bots/botTemplate/bots/gptBot/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | .env 3 | -------------------------------------------------------------------------------- /bots/botTemplate/bots/gptBot/src/handlers/switchContextHandler.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Allergy context switch handler. 3 | * 4 | * @param {Object} context - The context object provided by the Bot 5 | */ 6 | const switchToAllergyContext = async (context) => { 7 | await context.session.sendTextMessage('Context mode is on, ask questions about your allergies.'); 8 | //User transition to the next step 9 | context.stepper.nextUserStep(); 10 | } 11 | 12 | module.exports = { 13 | switchToAllergyContext 14 | }; 15 | -------------------------------------------------------------------------------- /bots/botTemplate/bots/translate-bot/.gitignore: -------------------------------------------------------------------------------- 1 | /.env 2 | -------------------------------------------------------------------------------- /bots/botTemplate/bots/translate-bot/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "translate-bot", 3 | "version": "1.0.0", 4 | "description": "Ethora bot for automatic text translation in chat", 5 | "main": "src/index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [ 10 | "translatebot", 11 | "ethora" 12 | ], 13 | "author": "Dappros, Anton Kolot", 14 | "license": "ISC", 15 | "dependencies": { 16 | "axios": "^1.3.6", 17 | "dotenv": "^16.0.3" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /bots/botTemplate/old/.env.example: -------------------------------------------------------------------------------- 1 | TYPE= 2 | #--- < Main data * > --- 3 | BOT_ADDRESS= 4 | CONFERENCE_ADDRESS= 5 | APP_USERNAME= 6 | APP_PASSWORD= 7 | DEFAULT_ROOM= 8 | API_URL= 9 | USER_LIMIT_PER_ROOM= 10 | #--- < Bot information > --- 11 | FIRST_NAME= 12 | LAST_NAME= 13 | PHOTO_URL= 14 | TOKEN_NAME='' 15 | PRESENCE_WAIT= 16 | #--- < Database > --- 17 | MONGO_USERNAME= 18 | MONGO_PASSWORD= 19 | MONGO_HOSTNAME= 20 | MONGO_PORT= 21 | MONGO_DB= 22 | #--- < Settings * > --- 23 | PRESENCE= 24 | INVITATION= 25 | #--- < Application token * > --- 26 | TOKEN='' 27 | -------------------------------------------------------------------------------- /bots/botTemplate/old/database/dataBase.js: -------------------------------------------------------------------------------- 1 | import mongoose from "mongoose"; 2 | 3 | const url = `mongodb://${process.env.MONGO_USERNAME}:${process.env.MONGO_PASSWORD}@${process.env.MONGO_HOSTNAME}:${process.env.MONGO_PORT}/${process.env.MONGO_DB}?authSource=admin`; 4 | 5 | export const connectToDb = async () => { 6 | return mongoose.connect(url, {useNewUrlParser: true}); 7 | } -------------------------------------------------------------------------------- /bots/botTemplate/old/database/models/rooms.js: -------------------------------------------------------------------------------- 1 | import mongoose from "mongoose"; 2 | 3 | const Schema = mongoose.Schema; 4 | 5 | const Rooms = new Schema({ 6 | address: {type: String, required: true, index: true, unique: true}, 7 | bot_name : {type: String}, 8 | date_added: { type: Date, default: Date.now} 9 | }); 10 | 11 | export const Room = mongoose.model('Rooms', Rooms); -------------------------------------------------------------------------------- /bots/botTemplate/old/handlers/errors.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const requestError = (data, request, error) =>{ 5 | console.log(request+' || Error: ', error); 6 | return sendMessage( 7 | data, 8 | messages.errors.requestError, 9 | 'message', 10 | false, 11 | 0, 12 | ); 13 | } -------------------------------------------------------------------------------- /bots/botTemplate/old/handlers/helloMessage.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const presenceMessageHandler = (data) => { 5 | console.log('=> presenceMessageHandler || Message received from ', data.userJID, data.message); 6 | return sendMessage( 7 | data, 8 | messages.exampleBotMessage.helloPresence, 9 | 'message', 10 | false, 11 | 0, 12 | ); 13 | } -------------------------------------------------------------------------------- /bots/botTemplate/old/handlers/help.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const helpHandler = (data) => { 5 | console.log('=> helpHandler | Message received from ', data.userJID, data.message); 6 | 7 | return sendMessage( 8 | data, 9 | messages.exampleBotMessage.helpMessage, 10 | 'message', 11 | false, 12 | 0, 13 | ); 14 | 15 | } -------------------------------------------------------------------------------- /bots/botTemplate/old/handlers/leave.js: -------------------------------------------------------------------------------- 1 | import {sendMessage, userSteps} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const leaveHandler = (data) => { 5 | console.log('=> leaveHandler | Message received from ', data.userJID, data.message); 6 | userSteps('setStep', data.userJID, 1); 7 | 8 | return sendMessage( 9 | data, 10 | messages.exampleBotMessage.leaveMessage, 11 | 'message', 12 | false, 13 | 0, 14 | ); 15 | } -------------------------------------------------------------------------------- /bots/botTemplate/old/handlers/test.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const testHandler = (data) => { 5 | console.log('=> Message received from ', data.userJID, data.message); 6 | sendMessage( 7 | data, 8 | messages.testMessage, 9 | 'message', 10 | false, 11 | 0, 12 | ); 13 | } -------------------------------------------------------------------------------- /bots/botTemplate/old/handlers/userLimit.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const userLimitHandler = (data) => { 5 | console.log('=> Message received from ', data.userJID, data.message); 6 | sendMessage( 7 | data, 8 | messages.exampleBotMessage.userLimit, 9 | 'message', 10 | false, 11 | 0, 12 | ); 13 | } -------------------------------------------------------------------------------- /bots/botTemplate/old/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "module", 3 | "scripts": { 4 | "start": "node -r dotenv/config client.js dotenv_config_path=.env.production", 5 | "dev": "node -r dotenv/config client.js dotenv_config_path=.env.development" 6 | }, 7 | "dependencies": { 8 | "@xmpp/client": "^0.13.1", 9 | "@xmpp/debug": "^0.13.0", 10 | "axios": "^0.27.2", 11 | "dotenv": "^16.0.1", 12 | "ethers": "^5.6.9", 13 | "mongoose": "^6.3.8" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /bots/botTemplate/src/api/IAuthorization.ts: -------------------------------------------------------------------------------- 1 | export interface IAuthorization { 2 | token: string; 3 | refreshToken: string; 4 | success: boolean; 5 | data: IAuthData; 6 | } 7 | 8 | export interface IAuthData { 9 | _id: string; 10 | botJID: string; 11 | appId: string; 12 | xmppPassword: string; 13 | walletAddress: string; 14 | username: string; 15 | firstName: string; 16 | lastName: string; 17 | photo: string; 18 | emails?: Array; 19 | updatedAt: string; 20 | isUserDataEncrypted: boolean; 21 | } -------------------------------------------------------------------------------- /bots/botTemplate/src/client/IXmppRoom.ts: -------------------------------------------------------------------------------- 1 | export interface IXmppRoom { 2 | presenceInTheRoom(roomJID: string): void; 3 | } -------------------------------------------------------------------------------- /bots/botTemplate/src/client/types/IKeyboard.ts: -------------------------------------------------------------------------------- 1 | export interface IKeyboardButton { 2 | name: string; 3 | value: string; 4 | notDisplayedValue: string; 5 | } 6 | 7 | export interface IKeyboard { 8 | [index: number]: IKeyboardButton; 9 | } -------------------------------------------------------------------------------- /bots/botTemplate/src/core/ISessionState.ts: -------------------------------------------------------------------------------- 1 | export interface ISessionState { 2 | [key: string]: any; 3 | } -------------------------------------------------------------------------------- /bots/botTemplate/src/core/IUser.ts: -------------------------------------------------------------------------------- 1 | export interface IUser { 2 | _id?: string; 3 | userJID: string; 4 | firstName: string; 5 | lastName: string; 6 | photoURL: string; 7 | walletAddress: string; 8 | } -------------------------------------------------------------------------------- /bots/botTemplate/src/stores/ISessionStore.ts: -------------------------------------------------------------------------------- 1 | import { ISession } from '../core/ISession'; 2 | 3 | export interface ISessionStore { 4 | find(key: string): Promise; 5 | add(key: string, data: ISession): Promise; 6 | destroy(key: string): Promise; 7 | } -------------------------------------------------------------------------------- /bots/botTemplate/src/utils/Logger.ts: -------------------------------------------------------------------------------- 1 | import pino from "pino"; 2 | 3 | const Logger = pino({ 4 | transport: { 5 | target: 'pino-pretty', 6 | options: { 7 | colorize: true, 8 | translateTime: 'yyyy-mm-dd HH:MM:ss' 9 | } 10 | } 11 | }); 12 | 13 | export default Logger; -------------------------------------------------------------------------------- /bots/botTemplate/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2017", 4 | "module": "commonjs", 5 | "outDir": "./lib", 6 | "rootDir": "./src", 7 | "baseUrl": "./", 8 | "esModuleInterop": true, 9 | "forceConsistentCasingInFileNames": true, 10 | }, 11 | "include": ["./src/**/*"] 12 | } -------------------------------------------------------------------------------- /bots/createBot/.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist -------------------------------------------------------------------------------- /bots/createBot/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env -------------------------------------------------------------------------------- /bots/createBot/.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "es5", 3 | "tabWidth": 2, 4 | "semi": false, 5 | "singleQuote": true 6 | } -------------------------------------------------------------------------------- /bots/gptBot/.env.example: -------------------------------------------------------------------------------- 1 | TYPE= 2 | #--- < Main data * > --- 3 | BOT_ADDRESS= 4 | CONFERENCE_ADDRESS= 5 | APP_USERNAME= 6 | APP_PASSWORD= 7 | DEFAULT_ROOM= 8 | API_URL= 9 | #--- < Bot information > --- 10 | FIRST_NAME= 11 | LAST_NAME= 12 | PHOTO_URL= 13 | TOKEN_NAME='' 14 | PRESENCE_WAIT= 15 | #--- < Database > --- 16 | MONGO_USERNAME= 17 | MONGO_PASSWORD= 18 | MONGO_HOSTNAME= 19 | MONGO_PORT= 20 | MONGO_DB= 21 | #--- < Settings * > --- 22 | PRESENCE= 23 | INVITATION= 24 | #--- < Application token * > --- 25 | TOKEN='' 26 | OPENAI_API_KEY='' 27 | -------------------------------------------------------------------------------- /bots/gptBot/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env.production 3 | .env.development 4 | test.js -------------------------------------------------------------------------------- /bots/gptBot/database/controllers/rooms.js: -------------------------------------------------------------------------------- 1 | import botOptions from "../../config/config.js"; 2 | import {Room} from "../models/rooms.js"; 3 | 4 | export const saveRoomData = async (address) => { 5 | return await new Room({ 6 | address: address, 7 | bot_name: botOptions.botData.firstName 8 | }).save(); 9 | } 10 | 11 | export const getListRooms = async () => { 12 | return await Room.find({bot_name: botOptions.botData.firstName}).exec(); 13 | } 14 | 15 | export const getOneRoom = async (address) => { 16 | return await Room.findOne({address: address, bot_name: botOptions.botData.firstName}).exec(); 17 | } -------------------------------------------------------------------------------- /bots/gptBot/database/dataBase.js: -------------------------------------------------------------------------------- 1 | import mongoose from "mongoose"; 2 | 3 | const url = `mongodb://${process.env.MONGO_USERNAME}:${process.env.MONGO_PASSWORD}@${process.env.MONGO_HOSTNAME}:${process.env.MONGO_PORT}/${process.env.MONGO_DB}?authSource=admin`; 4 | 5 | export const connectToDb = async () => { 6 | return mongoose.connect(url, {useNewUrlParser: true}); 7 | } -------------------------------------------------------------------------------- /bots/gptBot/database/models/rooms.js: -------------------------------------------------------------------------------- 1 | import mongoose from "mongoose"; 2 | 3 | const Schema = mongoose.Schema; 4 | 5 | const Rooms = new Schema({ 6 | address: {type: String, required: true, index: true, unique: true}, 7 | bot_name : {type: String}, 8 | date_added: { type: Date, default: Date.now} 9 | }); 10 | 11 | export const Room = mongoose.model('Rooms', Rooms); -------------------------------------------------------------------------------- /bots/gptBot/handlers/errors.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const requestError = (data, request, error) =>{ 5 | console.log(request+' || Error: ', error); 6 | return sendMessage( 7 | data, 8 | messages.errors.requestError, 9 | 'message', 10 | false, 11 | 0, 12 | ); 13 | } -------------------------------------------------------------------------------- /bots/gptBot/handlers/helloMessage.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const presenceMessageHandler = (data) => { 5 | console.log('=> presenceMessageHandler || Message received from ', data.userJID, data.message); 6 | return sendMessage( 7 | data, 8 | messages.exampleBotMessage.helloPresence, 9 | 'message', 10 | false, 11 | 0, 12 | ); 13 | } -------------------------------------------------------------------------------- /bots/gptBot/handlers/help.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const helpHandler = (data) => { 5 | console.log('=> helpHandler | Message received from ', data.userJID, data.message); 6 | 7 | return sendMessage( 8 | data, 9 | messages.exampleBotMessage.helpMessage, 10 | 'message', 11 | false, 12 | 0, 13 | ); 14 | 15 | } -------------------------------------------------------------------------------- /bots/gptBot/handlers/leave.js: -------------------------------------------------------------------------------- 1 | import {sendMessage, userSteps} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const leaveHandler = (data) => { 5 | console.log('=> leaveHandler | Message received from ', data.userJID, data.message); 6 | userSteps('setStep', data.userJID, 1); 7 | 8 | return sendMessage( 9 | data, 10 | messages.exampleBotMessage.leaveMessage, 11 | 'message', 12 | false, 13 | 0, 14 | ); 15 | } -------------------------------------------------------------------------------- /bots/gptBot/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "module", 3 | "scripts": { 4 | "start": "node -r dotenv/config client.js dotenv_config_path=.env.production", 5 | "dev": "node -r dotenv/config client.js dotenv_config_path=.env.development" 6 | }, 7 | "dependencies": { 8 | "@xmpp/client": "^0.13.1", 9 | "@xmpp/debug": "^0.13.0", 10 | "axios": "^0.27.2", 11 | "chatgpt": "^3.5.1", 12 | "dotenv": "^16.0.1", 13 | "ethers": "^5.6.9", 14 | "mongoose": "^6.3.8", 15 | "openai": "^3.1.0" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /bots/huthut/handlers/backTurnForest.js: -------------------------------------------------------------------------------- 1 | import {sendMessage, userSteps} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const backTurnForestHandler = (data) => { 5 | console.log('=> backTurnForestHandler | Message received from ', data.receiver, data.message); 6 | sendMessage( 7 | data, 8 | messages.visitingHut.firstGreeting, 9 | 'message', 10 | false, 11 | 0, 12 | ); 13 | userSteps('setStep', data.receiver, 2); 14 | } -------------------------------------------------------------------------------- /bots/huthut/handlers/frontTurnMe.js: -------------------------------------------------------------------------------- 1 | import {sendMessage, userSteps} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const frontTurnMeHandler = (data) => { 5 | console.log('=> frontTurnMe | Message received from ', data.receiver, data.message); 6 | userSteps('setStep', data.receiver, 3); 7 | return sendMessage( 8 | data, 9 | messages.visitingHut.openingHut, 10 | 'message', 11 | false, 12 | 0, 13 | ); 14 | } -------------------------------------------------------------------------------- /bots/huthut/handlers/leave.js: -------------------------------------------------------------------------------- 1 | import {sendMessage, userSteps} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const leaveHandler = (data) => { 5 | console.log('=> leaveHandler | Message received from ', data.receiver, data.message); 6 | userSteps('setStep', data.receiver, 1); 7 | return sendMessage( 8 | data, 9 | messages.general.toTheBeginning, 10 | 'message', 11 | false, 12 | 0, 13 | ); 14 | } -------------------------------------------------------------------------------- /bots/huthut/handlers/test.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const testHandler = (data) => { 5 | console.log('=> Message received from ', data.receiver, data.message); 6 | sendMessage( 7 | data, 8 | messages.testMessage, 9 | 'message', 10 | false, 11 | 0, 12 | ); 13 | } -------------------------------------------------------------------------------- /bots/huthut/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "module", 3 | "scripts": { 4 | "start": "node -r dotenv/config client.js dotenv_config_path=.env.production", 5 | "dev": "node -r dotenv/config client.js dotenv_config_path=.env.development" 6 | }, 7 | "dependencies": { 8 | "@xmpp/client": "^0.13.1", 9 | "@xmpp/debug": "^0.13.0", 10 | "axios": "^0.27.2", 11 | "dotenv": "^16.0.1" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /bots/merchantBot/.env.example: -------------------------------------------------------------------------------- 1 | TYPE= 2 | BOT_ADDRESS= 3 | CONFERENCE_ADDRESS= 4 | APP_USERNAME= 5 | APP_PASSWORD= 6 | #--- < DATA BASE > --- 7 | MONGO_USERNAME= 8 | MONGO_PASSWORD= 9 | MONGO_HOSTNAME= 10 | MONGO_PORT= 11 | MONGO_DB= 12 | #--- < Default room > --- 13 | DEFAULT_ROOM= 14 | #--- < APPLICATION TOKEN > --- 15 | TOKEN='' 16 | -------------------------------------------------------------------------------- /bots/merchantBot/config/config.js: -------------------------------------------------------------------------------- 1 | let botOptions = { 2 | botData: { 3 | firstName: 'Merchant', 4 | lastName: 'Bot', 5 | photoURL: 'https://cdn-icons.flaticon.com/png/512/5836/premium/5836743.png?token=exp=1660657047~hmac=cdeea9d95a270bafab4b78a3e1d7a553', 6 | tokenName: 'Dappros Platform Token', 7 | tokenSymbol: 'DPT', 8 | sendTokenName: 'Dappros Platform Token', 9 | userReward: 1, 10 | waitingAfterPresence: 10 /* minutes */ 11 | }, 12 | apiUrl: process.env.API_URL 13 | } 14 | 15 | export default botOptions; -------------------------------------------------------------------------------- /bots/merchantBot/controllers/questions.js: -------------------------------------------------------------------------------- 1 | import {Question} from "../models/questions.js"; 2 | 3 | export const getListQuestions = async () => { 4 | return await Question.find({}).exec(); 5 | } 6 | 7 | export const getQuestionsInGroup = async (group) => { 8 | return await Question.find({group: group}).exec(); 9 | } 10 | 11 | export const getQuestion = async (questionId) => { 12 | return await Question.findOne({question_id: questionId}).exec(); 13 | } -------------------------------------------------------------------------------- /bots/merchantBot/controllers/users.js: -------------------------------------------------------------------------------- 1 | import {User} from "../models/users.js"; 2 | import botOptions from "../config/config.js"; 3 | 4 | export const saveUserData = async (user_jid, user_name) => { 5 | return await new User({ 6 | user_jid: user_jid, 7 | user_name: user_name, 8 | bot_name: botOptions.botData.firstName 9 | }).save(); 10 | } 11 | 12 | export const getUserData = async (userJid) => { 13 | return await User.findOne({user_jid: userJid}).exec(); 14 | } -------------------------------------------------------------------------------- /bots/merchantBot/dataBase.js: -------------------------------------------------------------------------------- 1 | import mongoose from "mongoose"; 2 | 3 | const url = `mongodb://${process.env.MONGO_USERNAME}:${process.env.MONGO_PASSWORD}@${process.env.MONGO_HOSTNAME}:${process.env.MONGO_PORT}/${process.env.MONGO_DB}?authSource=admin`; 4 | 5 | export const connectToDb = async () => { 6 | return mongoose.connect(url, {useNewUrlParser: true}); 7 | } -------------------------------------------------------------------------------- /bots/merchantBot/handlers/errors.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const requestError = (data, request, error) =>{ 5 | console.log(request+' || Error: ', error); 6 | return sendMessage( 7 | data, 8 | messages.errors.requestError, 9 | 'message', 10 | false, 11 | 0, 12 | ); 13 | } -------------------------------------------------------------------------------- /bots/merchantBot/handlers/test.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const testHandler = (data) => { 5 | console.log('=> Message received from ', data.userJID, data.message); 6 | sendMessage( 7 | data, 8 | messages.testMessage, 9 | 'message', 10 | false, 11 | 0, 12 | ); 13 | } -------------------------------------------------------------------------------- /bots/merchantBot/models/answers.js: -------------------------------------------------------------------------------- 1 | import mongoose from "mongoose"; 2 | 3 | const Schema = mongoose.Schema; 4 | 5 | const Answers = new Schema({ 6 | question_id: {type: Number, required: true}, 7 | question_group: {type: String, required: true}, 8 | answer_group: {type: String}, 9 | answer: {type: String, required: true}, 10 | user_jid: {type: String, required: true, index: true}, 11 | timestamp: { type: Date, default: Date.now}, 12 | app_id: {type: String, required: true, index: true}, 13 | shortName: {type: String} 14 | }); 15 | 16 | export const Answer = mongoose.model('Answers', Answers); -------------------------------------------------------------------------------- /bots/merchantBot/models/questions.js: -------------------------------------------------------------------------------- 1 | import mongoose from "mongoose"; 2 | 3 | const Schema = mongoose.Schema; 4 | 5 | const Questions = new Schema({ 6 | question_id: {type: Number, required: true, index: true, unique: true}, 7 | question: {type: String, required: true}, 8 | buttons: [], 9 | validation: {type: String}, 10 | group: {type: String, required: true}, 11 | shortName: {type: String} 12 | }); 13 | 14 | export const Question = mongoose.model('Questions', Questions); -------------------------------------------------------------------------------- /bots/merchantBot/models/rooms.js: -------------------------------------------------------------------------------- 1 | import mongoose from "mongoose"; 2 | 3 | const Schema = mongoose.Schema; 4 | 5 | const Rooms = new Schema({ 6 | address: {type: String, required: true, index: true, unique: true}, 7 | bot_name : {type: String}, 8 | date_added: { type: Date, default: Date.now} 9 | }); 10 | 11 | export const Room = mongoose.model('Rooms', Rooms); -------------------------------------------------------------------------------- /bots/merchantBot/models/users.js: -------------------------------------------------------------------------------- 1 | import mongoose from "mongoose"; 2 | 3 | const Schema = mongoose.Schema; 4 | 5 | const Users = new Schema({ 6 | user_jid: {type: String, required: true, index: true, unique: true}, 7 | user_name: {type: String}, 8 | bot_name : {type: String}, 9 | date_added: { type: Date, default: Date.now} 10 | }); 11 | 12 | export const User = mongoose.model('Users', Users); -------------------------------------------------------------------------------- /bots/merchantBot/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "module", 3 | "scripts": { 4 | "start": "node -r dotenv/config client.js dotenv_config_path=.env.production", 5 | "dev": "node -r dotenv/config client.js dotenv_config_path=.env.development" 6 | }, 7 | "dependencies": { 8 | "@xmpp/client": "^0.13.1", 9 | "@xmpp/debug": "^0.13.0", 10 | "axios": "^0.27.2", 11 | "dotenv": "^16.0.1", 12 | "ethers": "^5.6.9", 13 | "mongoose": "^6.3.8" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /bots/questionnaire/controllers/questions.js: -------------------------------------------------------------------------------- 1 | import {Question} from "../models/questions.js"; 2 | 3 | export const getListQuestions = async () => { 4 | return await Question.find({}).exec(); 5 | } 6 | 7 | export const getQuestion = async (questionId) => { 8 | return await Question.findOne({question_id: questionId}).exec(); 9 | } -------------------------------------------------------------------------------- /bots/questionnaire/dataBase.js: -------------------------------------------------------------------------------- 1 | import mongoose from "mongoose"; 2 | 3 | const url = `mongodb://${process.env.MONGO_USERNAME}:${process.env.MONGO_PASSWORD}@${process.env.MONGO_HOSTNAME}:${process.env.MONGO_PORT}/${process.env.MONGO_DB}?authSource=admin`; 4 | 5 | export const connectToDb = async () => { 6 | return mongoose.connect(url, {useNewUrlParser: true}); 7 | } -------------------------------------------------------------------------------- /bots/questionnaire/handlers/leave.js: -------------------------------------------------------------------------------- 1 | import {sendMessage, userSteps} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const leaveHandler = (data) => { 5 | console.log('=> leaveHandler | Message received from ', data.receiver, data.message); 6 | userSteps('setStep', data.receiver, 1); 7 | return sendMessage( 8 | data, 9 | messages.general.toTheBeginning, 10 | 'message', 11 | false, 12 | 0, 13 | ); 14 | } -------------------------------------------------------------------------------- /bots/questionnaire/handlers/test.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const testHandler = (data) => { 5 | console.log('=> Message received from ', data.receiver, data.message); 6 | sendMessage( 7 | data, 8 | messages.testMessage, 9 | 'message', 10 | false, 11 | 0, 12 | ); 13 | } -------------------------------------------------------------------------------- /bots/questionnaire/models/answers.js: -------------------------------------------------------------------------------- 1 | import mongoose from "mongoose"; 2 | 3 | const Schema = mongoose.Schema; 4 | 5 | const Answers = new Schema({ 6 | question_id: {type: Number, required: true}, 7 | answer: {type: String, required: true}, 8 | user_jid: {type: String, required: true, index: true}, 9 | timestamp: { type: Date, default: Date.now}, 10 | app_id: {type: String, required: true, index: true}, 11 | }); 12 | 13 | export const Answer = mongoose.model('Answers', Answers); -------------------------------------------------------------------------------- /bots/questionnaire/models/questions.js: -------------------------------------------------------------------------------- 1 | import mongoose from "mongoose"; 2 | 3 | const Schema = mongoose.Schema; 4 | 5 | const Questions = new Schema({ 6 | question_id: {type: Number, required: true, index: true, unique: true}, 7 | question: {type: String, required: true} 8 | }); 9 | 10 | export const Question = mongoose.model('Questions', Questions); -------------------------------------------------------------------------------- /bots/questionnaire/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "module", 3 | "scripts": { 4 | "start": "node -r dotenv/config client.js dotenv_config_path=.env.production", 5 | "dev": "node -r dotenv/config client.js dotenv_config_path=.env.development" 6 | }, 7 | "dependencies": { 8 | "@xmpp/client": "^0.13.1", 9 | "@xmpp/debug": "^0.13.0", 10 | "axios": "^0.27.2", 11 | "dotenv": "^16.0.1", 12 | "mongoose": "^6.3.8" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /bots/raffle/.env.example: -------------------------------------------------------------------------------- 1 | TYPE= 2 | #--- < Main data * > --- 3 | BOT_ADDRESS= 4 | CONFERENCE_ADDRESS= 5 | APP_USERNAME= 6 | APP_PASSWORD= 7 | DEFAULT_ROOM= 8 | API_URL= 9 | USER_LIMIT_PER_ROOM= 10 | #--- < Bot information > --- 11 | FIRST_NAME= 12 | LAST_NAME= 13 | PHOTO_URL= 14 | TOKEN_NAME='' 15 | PRESENCE_WAIT= 16 | #--- < Database > --- 17 | MONGO_USERNAME= 18 | MONGO_PASSWORD= 19 | MONGO_HOSTNAME= 20 | MONGO_PORT= 21 | MONGO_DB= 22 | #--- < Settings * > --- 23 | PRESENCE= 24 | INVITATION= 25 | #--- < Application token * > --- 26 | TOKEN='' 27 | -------------------------------------------------------------------------------- /bots/raffle/database/controllers/rooms.js: -------------------------------------------------------------------------------- 1 | import botOptions from "../../config/config.js"; 2 | import {Room} from "../models/rooms.js"; 3 | 4 | export const saveRoomData = async (address) => { 5 | return await new Room({ 6 | address: address, 7 | bot_name: botOptions.botData.firstName 8 | }).save(); 9 | } 10 | 11 | export const getListRooms = async () => { 12 | return await Room.find({bot_name: botOptions.botData.firstName}).exec(); 13 | } 14 | 15 | export const getOneRoom = async (address) => { 16 | return await Room.findOne({address: address, bot_name: botOptions.botData.firstName}).exec(); 17 | } -------------------------------------------------------------------------------- /bots/raffle/database/dataBase.js: -------------------------------------------------------------------------------- 1 | import mongoose from "mongoose"; 2 | 3 | const url = `mongodb://${process.env.MONGO_USERNAME}:${process.env.MONGO_PASSWORD}@${process.env.MONGO_HOSTNAME}:${process.env.MONGO_PORT}/${process.env.MONGO_DB}?authSource=admin`; 4 | 5 | export const connectToDb = async () => { 6 | return mongoose.connect(url, {useNewUrlParser: true}); 7 | } -------------------------------------------------------------------------------- /bots/raffle/database/models/rooms.js: -------------------------------------------------------------------------------- 1 | import mongoose from "mongoose"; 2 | 3 | const Schema = mongoose.Schema; 4 | 5 | const Rooms = new Schema({ 6 | address: {type: String, required: true, index: true, unique: true}, 7 | bot_name : {type: String}, 8 | date_added: { type: Date, default: Date.now} 9 | }); 10 | 11 | export const Room = mongoose.model('Rooms', Rooms); -------------------------------------------------------------------------------- /bots/raffle/handlers/botInitiate.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const botInitiate = (data) => { 5 | console.log('=> botInitiate | Message received from ', data.userJID, data.message); 6 | 7 | return sendMessage( 8 | data, 9 | messages.raffleBotReplies.initiateBot, 10 | 'message', 11 | false, 12 | 0, 13 | ); 14 | } 15 | -------------------------------------------------------------------------------- /bots/raffle/handlers/errors.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const requestError = (data, request, error) =>{ 5 | console.log(request+' || Error: ', error); 6 | return sendMessage( 7 | data, 8 | messages.errors.requestError, 9 | 'message', 10 | false, 11 | 0, 12 | ); 13 | } -------------------------------------------------------------------------------- /bots/raffle/handlers/getBalanceHandler.js: -------------------------------------------------------------------------------- 1 | import {getBalance} from "../api.js"; 2 | import {getRandomNFT} from "./helpers/getRandomNFT.js"; 3 | 4 | export const getBalanceHandler = (data) => { 5 | console.log('=> getBalanceHandler | Message received from ', data.userJID, data.message); 6 | getBalance().then(result => { 7 | const randomItem = getRandomNFT(result); 8 | console.log(randomItem) 9 | }) 10 | 11 | } -------------------------------------------------------------------------------- /bots/raffle/handlers/helloMessage.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const presenceMessageHandler = (data) => { 5 | console.log('=> presenceMessageHandler || Message received from ', data.userJID, data.message); 6 | return sendMessage( 7 | data, 8 | messages.exampleBotMessage.helloPresence, 9 | 'message', 10 | false, 11 | 0, 12 | ); 13 | } -------------------------------------------------------------------------------- /bots/raffle/handlers/help.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const helpHandler = (data) => { 5 | console.log('=> helpHandler | Message received from ', data.userJID, data.message); 6 | 7 | return sendMessage( 8 | data, 9 | messages.exampleBotMessage.helpMessage, 10 | 'message', 11 | false, 12 | 0, 13 | ); 14 | 15 | } -------------------------------------------------------------------------------- /bots/raffle/handlers/helpers/getRandomNFT.js: -------------------------------------------------------------------------------- 1 | export const getRandomNFT = (itemsList) => { 2 | if (itemsList.success && itemsList.balance.length > 0) { 3 | const filteredItems = itemsList.balance.filter(item => item.tokenType === 'NFT' && item.balance > 0); 4 | if (filteredItems.length <= 0) { 5 | return []; 6 | } 7 | const randomIndex = Math.floor(Math.random() * filteredItems.length); 8 | return [filteredItems[randomIndex]]; 9 | } else { 10 | return []; 11 | } 12 | } -------------------------------------------------------------------------------- /bots/raffle/handlers/leave.js: -------------------------------------------------------------------------------- 1 | import {sendMessage, userSteps} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const leaveHandler = (data) => { 5 | console.log('=> leaveHandler | Message received from ', data.userJID, data.message); 6 | userSteps('setStep', data.userJID, 1); 7 | 8 | return sendMessage( 9 | data, 10 | messages.exampleBotMessage.leaveMessage, 11 | 'message', 12 | false, 13 | 0, 14 | ); 15 | } -------------------------------------------------------------------------------- /bots/raffle/handlers/test.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const testHandler = (data) => { 5 | console.log('=> Message received from ', data.userJID, data.message); 6 | sendMessage( 7 | data, 8 | messages.testMessage, 9 | 'message', 10 | false, 11 | 0, 12 | ); 13 | } -------------------------------------------------------------------------------- /bots/raffle/handlers/userLimit.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const userLimitHandler = (data) => { 5 | console.log('=> Message received from ', data.userJID, data.message); 6 | sendMessage( 7 | data, 8 | messages.exampleBotMessage.userLimit, 9 | 'message', 10 | false, 11 | 0, 12 | ); 13 | } -------------------------------------------------------------------------------- /bots/raffle/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "module", 3 | "scripts": { 4 | "start": "node -r dotenv/config client.js dotenv_config_path=.env.production", 5 | "dev": "node -r dotenv/config client.js dotenv_config_path=.env.development" 6 | }, 7 | "dependencies": { 8 | "@xmpp/client": "^0.13.1", 9 | "@xmpp/debug": "^0.13.0", 10 | "axios": "^0.27.2", 11 | "dotenv": "^16.0.1", 12 | "ethers": "^5.6.9", 13 | "mongoose": "^6.3.8" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /bots/translateBot/.env.example: -------------------------------------------------------------------------------- 1 | TYPE= 2 | #--- < Main data * > --- 3 | BOT_ADDRESS= 4 | CONFERENCE_ADDRESS= 5 | APP_USERNAME= 6 | APP_PASSWORD= 7 | DEFAULT_ROOM= 8 | API_URL= 9 | USER_LIMIT_PER_ROOM= 10 | #--- < Bot information > --- 11 | FIRST_NAME= 12 | LAST_NAME= 13 | PHOTO_URL= 14 | TOKEN_NAME='' 15 | PRESENCE_WAIT= 16 | #--- < Database > --- 17 | MONGO_USERNAME= 18 | MONGO_PASSWORD= 19 | MONGO_HOSTNAME= 20 | MONGO_PORT= 21 | MONGO_DB= 22 | #--- < Settings * > --- 23 | PRESENCE= 24 | INVITATION= 25 | #--- < Application token * > --- 26 | TOKEN='' 27 | -------------------------------------------------------------------------------- /bots/translateBot/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | /.env.development 3 | /.env.production 4 | -------------------------------------------------------------------------------- /bots/translateBot/database/dataBase.js: -------------------------------------------------------------------------------- 1 | import mongoose from "mongoose"; 2 | 3 | const url = `mongodb://${process.env.MONGO_USERNAME}:${process.env.MONGO_PASSWORD}@${process.env.MONGO_HOSTNAME}:${process.env.MONGO_PORT}/${process.env.MONGO_DB}?authSource=admin`; 4 | 5 | export const connectToDb = async () => { 6 | return mongoose.connect(url, {useNewUrlParser: true}); 7 | } -------------------------------------------------------------------------------- /bots/translateBot/database/models/rooms.js: -------------------------------------------------------------------------------- 1 | import mongoose from "mongoose"; 2 | 3 | const Schema = mongoose.Schema; 4 | 5 | const Rooms = new Schema({ 6 | address: {type: String, required: true, index: true, unique: true}, 7 | bot_name : {type: String}, 8 | date_added: { type: Date, default: Date.now} 9 | }); 10 | 11 | export const Room = mongoose.model('Rooms', Rooms); -------------------------------------------------------------------------------- /bots/translateBot/handlers/errors.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const requestError = (data, request, error) =>{ 5 | console.log(request+' || Error: ', error); 6 | return sendMessage( 7 | data, 8 | messages.errors.requestError, 9 | 'message', 10 | false, 11 | 0, 12 | ); 13 | } -------------------------------------------------------------------------------- /bots/translateBot/handlers/helloMessage.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const presenceMessageHandler = (data) => { 5 | console.log('=> presenceMessageHandler || Message received from ', data.userJID, data.message); 6 | return sendMessage( 7 | data, 8 | messages.exampleBotMessage.helloPresence, 9 | 'message', 10 | false, 11 | 0, 12 | ); 13 | } -------------------------------------------------------------------------------- /bots/translateBot/handlers/help.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const helpHandler = (data) => { 5 | console.log('=> helpHandler | Message received from ', data.userJID, data.message); 6 | 7 | return sendMessage( 8 | data, 9 | messages.exampleBotMessage.helpMessage, 10 | 'message', 11 | false, 12 | 0, 13 | ); 14 | 15 | } -------------------------------------------------------------------------------- /bots/translateBot/handlers/leave.js: -------------------------------------------------------------------------------- 1 | import {sendMessage, userSteps} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const leaveHandler = (data) => { 5 | console.log('=> leaveHandler | Message received from ', data.userJID, data.message); 6 | userSteps('setStep', data.userJID, 1); 7 | 8 | return sendMessage( 9 | data, 10 | messages.exampleBotMessage.leaveMessage, 11 | 'message', 12 | false, 13 | 0, 14 | ); 15 | } -------------------------------------------------------------------------------- /bots/translateBot/handlers/test.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const testHandler = (data) => { 5 | console.log('=> Message received from ', data.userJID, data.message); 6 | sendMessage( 7 | data, 8 | messages.testMessage, 9 | 'message', 10 | false, 11 | 0, 12 | ); 13 | } -------------------------------------------------------------------------------- /bots/translateBot/handlers/userLimit.js: -------------------------------------------------------------------------------- 1 | import {sendMessage} from "../actions.js"; 2 | import messages from "../config/messages.js"; 3 | 4 | export const userLimitHandler = (data) => { 5 | console.log('=> Message received from ', data.userJID, data.message); 6 | sendMessage( 7 | data, 8 | messages.exampleBotMessage.userLimit, 9 | 'message', 10 | false, 11 | 0, 12 | ); 13 | } -------------------------------------------------------------------------------- /bots/translateBot/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "module", 3 | "scripts": { 4 | "start": "node -r dotenv/config client.js dotenv_config_path=.env.production", 5 | "dev": "node -r dotenv/config client.js dotenv_config_path=.env.development" 6 | }, 7 | "dependencies": { 8 | "@vitalets/google-translate-api": "^9.1.0", 9 | "@xmpp/client": "^0.13.1", 10 | "@xmpp/debug": "^0.13.0", 11 | "axios": "^0.27.2", 12 | "dotenv": "^16.0.1", 13 | "ethers": "^5.6.9", 14 | "google-translate-api": "^2.3.0", 15 | "mongoose": "^6.3.8" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /client-reactnative/.buckconfig: -------------------------------------------------------------------------------- 1 | 2 | [android] 3 | target = Google Inc.:Google APIs:23 4 | 5 | [maven_repositories] 6 | central = https://repo1.maven.org/maven2 7 | -------------------------------------------------------------------------------- /client-reactnative/.eslintignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /client-reactnative/.ruby-version: -------------------------------------------------------------------------------- 1 | 2.7.4 2 | -------------------------------------------------------------------------------- /client-reactnative/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "java.compile.nullAnalysis.mode": "automatic", 3 | "editor.defaultFormatter": "esbenp.prettier-vscode", 4 | "[typescriptreact]": { 5 | "editor.defaultFormatter": "esbenp.prettier-vscode" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /client-reactnative/Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version 4 | ruby '2.7.4' 5 | 6 | gem 'cocoapods', '~> 1.11', '>= 1.11.2' 7 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/AudioPlayer/AudioPlayer-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | 4 | import AudioPlayer from "../../src/components/AudioPlayer/AudioPlayer" 5 | 6 | test("renders correctly", () => { 7 | const tree = renderer.create().toJSON() 8 | expect(tree).toMatchSnapshot() 9 | }) 10 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/AudioPlayer/PlayButton-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | import PlayButton from "../../src/components/AudioPlayer/PlayButton" 4 | 5 | test("renders correctly", () => { 6 | const tree = renderer 7 | .create( 8 | console.log("play pressed")} state="pause" /> 9 | ) 10 | .toJSON() 11 | expect(tree).toMatchSnapshot() 12 | }) 13 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Chat/AudioSendButton-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | import { AudioSendButton } from "../../src/components/Chat/AudioSendButton" 4 | 5 | test("renders correctly", () => { 6 | const tree = renderer 7 | .create( 8 | console.log("Press in")} 10 | onPressOut={() => console.log("Press out")} 11 | recording={true} 12 | /> 13 | ) 14 | .toJSON() 15 | expect(tree).toMatchSnapshot() 16 | }) 17 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Chat/CreateNewChatButton-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | import { CreateNewChatButton } from "../../src/components/Chat/CreateNewChatButton" 4 | import { NativeBaseProvider } from "native-base" 5 | 6 | test("renders correctly", () => { 7 | const tree = renderer 8 | .create( 9 | 10 | console.log("press")} /> 11 | 12 | ) 13 | .toJSON() 14 | expect(tree).toMatchSnapshot() 15 | }) 16 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Chat/MessageBody-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | 4 | import MessageBody from "../../src/components/Chat/MessageBody" 5 | 6 | test("renders correctly", () => { 7 | const tree = renderer.create().toJSON() 8 | expect(tree).toMatchSnapshot() 9 | }) 10 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Chat/MessageSize-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | import { MessageSize } from "../../src/components/Chat/MessageSize" 4 | import { NativeBaseProvider } from "native-base" 5 | 6 | test("renders correctly", () => { 7 | const tree = renderer 8 | .create( 9 | 10 | 11 | 12 | ) 13 | .toJSON() 14 | expect(tree).toMatchSnapshot() 15 | }) 16 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Chat/MessageText-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | import { MessageText } from "../../src/components/Chat/MessageText" 4 | 5 | test("renders correctly", () => { 6 | const tree = renderer.create().toJSON() 7 | expect(tree).toMatchSnapshot() 8 | }) 9 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Chat/MetaNavigation-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | import { MetaNavigation } from "../../src/components/Chat/MetaNavigation" 4 | 5 | test("renders correctly", () => { 6 | const tree = renderer 7 | .create( 8 | console.log("close")} 11 | open={true} 12 | /> 13 | ) 14 | .toJSON() 15 | expect(tree).toMatchSnapshot() 16 | }) 17 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Chat/RenderDay-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | import RenderDay from "../../src/components/Chat/RenderDay" 4 | 5 | test("renders correctly", () => { 6 | const tree = renderer 7 | .create() 8 | .toJSON() 9 | expect(tree).toMatchSnapshot() 10 | }) 11 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Chat/VideoMessage-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | import { VideoMessage } from "../../src/components/Chat/VideoMessage" 4 | import { NativeBaseProvider } from "native-base" 5 | 6 | test("renders correctly", () => { 7 | const tree = renderer 8 | .create( 9 | 10 | console.log("press")} 12 | size={"20"} 13 | url={"url"} 14 | /> 15 | 16 | ) 17 | .toJSON() 18 | expect(tree).toMatchSnapshot() 19 | }) 20 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Chat/__snapshots__/AudioMessage-test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`renders correctly 1`] = ` 4 | 15 | `; 16 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Chat/__snapshots__/ChatBackgroundCard-test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`renders correctly 1`] = ` 4 | 15 | `; 16 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Chat/__snapshots__/CreateNewChatButton-test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`renders correctly 1`] = ` 4 | 15 | `; 16 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Chat/__snapshots__/FileMessage-test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`renders correctly 1`] = ` 4 | 15 | `; 16 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Chat/__snapshots__/ImageMessage-test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`renders correctly 1`] = ` 4 | 15 | `; 16 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Chat/__snapshots__/MessageSize-test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`renders correctly 1`] = ` 4 | 15 | `; 16 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Chat/__snapshots__/PdfMessage-test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`renders correctly 1`] = ` 4 | 15 | `; 16 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Chat/__snapshots__/RenderChatFooter-test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`renders correctly 1`] = ` 4 | 15 | `; 16 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Chat/__snapshots__/RenderDay-test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`renders correctly 1`] = ` 4 | 7 | 8 | ll 9 | 10 | 11 | `; 12 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Chat/__snapshots__/VideoMessage-test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`renders correctly 1`] = ` 4 | 15 | `; 16 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Login/LoginScreen-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | 4 | import LoginScreen from "../../src/Screens/Login/LoginScreen" 5 | 6 | test("renders correctly", () => { 7 | const tree = renderer.create().toJSON() 8 | expect(tree).toMatchSnapshot() 9 | }) 10 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Login/RegisterExternalWalletModal-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | import { RegisterExternalWalletModal } from "../../src/components/Login/RegisterExternalWalletModal" 4 | 5 | test("renders correctly", () => { 6 | const tree = renderer 7 | .create( 8 | console.log("close modal")} 10 | message="message" 11 | modalVisible={true} 12 | walletAddress="walletAddress" 13 | /> 14 | ) 15 | .toJSON() 16 | expect(tree).toMatchSnapshot() 17 | }) 18 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Login/SocialButton-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | import SocialButton from "../../src/components/Buttons/SocialButton" 4 | import { NativeBaseProvider } from "native-base" 5 | 6 | test("renders correctly", () => { 7 | const tree = renderer 8 | .create( 9 | 10 | 11 | 12 | ) 13 | .toJSON() 14 | expect(tree).toMatchSnapshot() 15 | }) 16 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Login/__snapshots__/SocialButton-test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`renders correctly 1`] = ` 4 | 15 | `; 16 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/MainHeader/HeaderAppLogo-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | import { HeaderAppLogo } from "../../src/components/MainHeader/HeaderAppLogo" 4 | 5 | test("renders correctly", () => { 6 | const tree = renderer.create().toJSON() 7 | expect(tree).toMatchSnapshot() 8 | }) 9 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/MainHeader/HeaderAppTitle-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | import { HeaderAppTitle } from "../../src/components/MainHeader/HeaderAppTitle" 4 | 5 | test("renders correctly", () => { 6 | const tree = renderer.create().toJSON() 7 | expect(tree).toMatchSnapshot() 8 | }) 9 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/MainHeader/HeaderBalanceButton-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | import { HeaderBalanceButton } from "../../src/components/MainHeader/HeaderBalanceButton" 4 | 5 | test("renders correctly", () => { 6 | const tree = renderer.create().toJSON() 7 | expect(tree).toMatchSnapshot() 8 | }) 9 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/MainHeader/HeaderMenu-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | import { HeaderMenu } from "../../src/components/MainHeader/HeaderMenu" 4 | 5 | test("renders correctly", () => { 6 | const tree = renderer.create().toJSON() 7 | expect(tree).toMatchSnapshot() 8 | }) 9 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/MainHeader/__snapshots__/SubMenu-test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`renders correctly 1`] = ` 4 | 15 | `; 16 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Modals/Chat/__snapshots__/ChangeRoomNameModal-test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`renders correctly 1`] = ` 4 | 15 | `; 16 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Modals/ChatMediaModal-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | import { ChatMediaModal } from "../../src/components/Modals/ChatMediaModal" 4 | 5 | test("renders correctly", () => { 6 | const tree = renderer 7 | .create( 8 | console.log("close")} 11 | open={true} 12 | type="application/octet-stream" 13 | url="url" 14 | /> 15 | ) 16 | .toJSON() 17 | expect(tree).toMatchSnapshot() 18 | }) 19 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Modals/Login/__snapshots__/UserNameModal-test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`renders correctly 1`] = ` 4 | 15 | `; 16 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Modals/QR/QRModal-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | import { QRModal } from "../../../src/components/Modals/QR/QRModal" 4 | 5 | test("renders correctly", () => { 6 | const tree = renderer 7 | .create( 8 | console.log("close")} 11 | open={true} 12 | title="title" 13 | removeBaseUrl={false} 14 | /> 15 | ) 16 | .toJSON() 17 | expect(tree).toMatchSnapshot() 18 | }) 19 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Modals/ScanQrModal-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | import { ScanQrModal } from "../../src/components/Modals/ScanQrModal" 4 | 5 | test("renders correctly", () => { 6 | const tree = renderer 7 | .create( 8 | console.log("close")} 10 | onSuccess={() => console.log("success")} 11 | open={false} 12 | /> 13 | ) 14 | .toJSON() 15 | expect(tree).toMatchSnapshot() 16 | }) 17 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Modals/TransactionModal/ReportAndBlockButton-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | import ReportAndBlockButton from "../../../src/components/Modals/TransactionModal/ReportAndBlockButton" 4 | 5 | test("renders correctly", () => { 6 | const tree = renderer 7 | .create( 8 | console.log("press")} text="text" /> 9 | ) 10 | .toJSON() 11 | expect(tree).toMatchSnapshot() 12 | }) 13 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Modals/TransactionModal/SendItem-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | import SendItem from "../../../src/components/Modals/TransactionModal/SendItem" 4 | import { NativeBaseProvider } from "native-base" 5 | 6 | test("renders correctly", () => { 7 | const tree = renderer 8 | .create( 9 | 10 | console.log("press")} title="title" /> 11 | 12 | ) 13 | .toJSON() 14 | expect(tree).toMatchSnapshot() 15 | }) 16 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Modals/TransactionModal/__snapshots__/CoinsTransferList-test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`renders correctly 1`] = ` 4 | 15 | `; 16 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Modals/TransactionModal/__snapshots__/SendItem-test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`renders correctly 1`] = ` 4 | 15 | `; 16 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Modals/TransactionModal/__snapshots__/TransferModalButton-test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`renders correctly 1`] = ` 4 | 15 | `; 16 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Modals/__snapshots__/DeleteDialog-test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`renders correctly 1`] = ` 4 | 15 | `; 16 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Nft/NftTransactionList-test.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import renderer from "react-test-renderer" 3 | import NftTransactionList from "../../src/components/Nft/NftTransactionList" 4 | 5 | test("renders correctly", () => { 6 | const tree = renderer 7 | .create( 8 | console.log("end reach")} 10 | transactions={{}} 11 | walletAddress="wallet address" 12 | /> 13 | ) 14 | .toJSON() 15 | expect(tree).toMatchSnapshot() 16 | }) 17 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/Profile/__snapshots__/DocumentListItem-test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`renders correctly 1`] = ` 4 | 15 | `; 16 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/SecondaryHeader/SecondaryHeader-test.tsx: -------------------------------------------------------------------------------- 1 | //components/SecondaryHeader/SecondaryHeader.tsx 2 | 3 | import React from "react" 4 | import renderer from "react-test-renderer" 5 | import SecondaryHeader from "../../src/components/SecondaryHeader/SecondaryHeader" 6 | import { NativeBaseProvider } from "native-base" 7 | 8 | test("renders correctly", () => { 9 | const tree = renderer 10 | .create( 11 | 12 | 13 | 14 | ) 15 | .toJSON() 16 | expect(tree).toMatchSnapshot() 17 | }) 18 | -------------------------------------------------------------------------------- /client-reactnative/__tests__/SecondaryHeader/__snapshots__/SecondaryHeader-test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`renders correctly 1`] = ` 4 | 15 | `; 16 | -------------------------------------------------------------------------------- /client-reactnative/android/app/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/debug.keystore -------------------------------------------------------------------------------- /client-reactnative/android/app/ethoraAndroidKeystore.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/ethoraAndroidKeystore.jks -------------------------------------------------------------------------------- /client-reactnative/android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | -keep class com.facebook.hermes.unicode.** { *; } 12 | -keep class com.facebook.jni.** { *; } -------------------------------------------------------------------------------- /client-reactnative/android/app/release/output-metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "artifactType": { 4 | "type": "APK", 5 | "kind": "Directory" 6 | }, 7 | "applicationId": "com.ethora", 8 | "variantName": "release", 9 | "elements": [ 10 | { 11 | "type": "SINGLE", 12 | "filters": [], 13 | "attributes": [], 14 | "versionCode": 11, 15 | "versionName": "23.06", 16 | "outputFile": "app-release.apk" 17 | } 18 | ], 19 | "elementType": "File" 20 | } -------------------------------------------------------------------------------- /client-reactnative/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Montserrat-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Montserrat-Bold.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Montserrat-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Montserrat-Light.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Montserrat-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Montserrat-Medium.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Montserrat-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Montserrat-Regular.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Montserrat-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Montserrat-SemiBold.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Montserrat-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Montserrat-Thin.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Poppins-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Poppins-Black.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Poppins-BlackItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Poppins-BlackItalic.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Poppins-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Poppins-Bold.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Poppins-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Poppins-BoldItalic.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Poppins-ExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Poppins-ExtraBold.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Poppins-ExtraBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Poppins-ExtraBoldItalic.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Poppins-ExtraLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Poppins-ExtraLight.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Poppins-ExtraLightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Poppins-ExtraLightItalic.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Poppins-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Poppins-Italic.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Poppins-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Poppins-Light.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Poppins-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Poppins-LightItalic.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Poppins-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Poppins-Medium.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Poppins-MediumItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Poppins-MediumItalic.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Poppins-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Poppins-Regular.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Poppins-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Poppins-SemiBold.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Poppins-SemiBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Poppins-SemiBoldItalic.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Poppins-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Poppins-Thin.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/Poppins-ThinItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/Poppins-ThinItalic.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/assets/fonts/VarelaRound-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/assets/fonts/VarelaRound-Regular.ttf -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/ic_launcher-playstore.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/jni/MainApplicationModuleProvider.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include 7 | 8 | namespace facebook { 9 | namespace react { 10 | 11 | std::shared_ptr MainApplicationModuleProvider( 12 | const std::string moduleName, 13 | const JavaTurboModule::InitParams ¶ms); 14 | 15 | } // namespace react 16 | } // namespace facebook 17 | -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/jni/OnLoad.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "MainApplicationTurboModuleManagerDelegate.h" 3 | #include "MainComponentsRegistry.h" 4 | 5 | JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) { 6 | return facebook::jni::initialize(vm, [] { 7 | facebook::react::MainApplicationTurboModuleManagerDelegate:: 8 | registerNatives(); 9 | facebook::react::MainComponentsRegistry::registerNatives(); 10 | }); 11 | } 12 | -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/drawable-hdpi/bootsplash_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/drawable-hdpi/bootsplash_logo.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/drawable-hdpi/splashscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/drawable-hdpi/splashscreen.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/drawable-mdpi/bootsplash_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/drawable-mdpi/bootsplash_logo.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/drawable-mdpi/splashscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/drawable-mdpi/splashscreen.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/drawable-xhdpi/bootsplash_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/drawable-xhdpi/bootsplash_logo.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/drawable-xhdpi/splashscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/drawable-xhdpi/splashscreen.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/drawable-xxhdpi/bootsplash_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/drawable-xxhdpi/bootsplash_logo.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/drawable-xxhdpi/splashscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/drawable-xxhdpi/splashscreen.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/drawable-xxxhdpi/bootsplash_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/drawable-xxxhdpi/bootsplash_logo.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/drawable-xxxhdpi/splashscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/drawable-xxxhdpi/splashscreen.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/drawable/launch_screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/drawable/launch_screen.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/layout/launch_screen.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/raw/token1.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/raw/token1.mp3 -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/raw/token3.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/raw/token3.mp3 -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/raw/token5.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/raw/token5.mp3 -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/raw/token7.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/app/src/main/res/raw/token7.mp3 -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #000000 4 | #FFF 5 | #FFFFFF 6 | 7 | -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Ethora 3 | 1172938123281314 4 | fb1172938123281314 5 | 5fa1d65dc59d07d42a9f68f22ae62ca8 6 | 7 | -------------------------------------------------------------------------------- /client-reactnative/android/app/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10.0.2.2 4 | localhost 5 | 6 | -------------------------------------------------------------------------------- /client-reactnative/android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /client-reactnative/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /client-reactnative/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'ethora' 2 | apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) 3 | include ':app' 4 | includeBuild('../node_modules/react-native-gradle-plugin') 5 | 6 | if (settings.hasProperty("newArchEnabled") && settings.newArchEnabled == "true") { 7 | include(":ReactAndroid") 8 | project(":ReactAndroid").projectDir = file('../node_modules/react-native/ReactAndroid') 9 | } 10 | -------------------------------------------------------------------------------- /client-reactnative/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ethora", 3 | "displayName": "ethora" 4 | } -------------------------------------------------------------------------------- /client-reactnative/assetsTransformer.js: -------------------------------------------------------------------------------- 1 | const path = require("path") 2 | 3 | module.exports = { 4 | process(src, filename, config, options) { 5 | return "module.exports = " + JSON.stringify(path.basename(filename)) + ";" 6 | }, 7 | } 8 | -------------------------------------------------------------------------------- /client-reactnative/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: [ 3 | "react-native-reanimated/plugin", 4 | ["@babel/plugin-transform-flow-strip-types", { loose: true }], //https://github.com/facebook/react-native/issues/29084#issuecomment-1030732709 5 | ["@babel/plugin-proposal-class-properties", { loose: true }], 6 | ["@babel/plugin-proposal-private-methods", { loose: true }], 7 | [ 8 | "@babel/plugin-transform-react-jsx", 9 | { 10 | runtime: "automatic", 11 | }, 12 | ], 13 | ], 14 | presets: ["module:metro-react-native-babel-preset"], 15 | } 16 | -------------------------------------------------------------------------------- /client-reactnative/default.realm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/default.realm -------------------------------------------------------------------------------- /client-reactnative/default.realm.management/access_control.control.mx: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client-reactnative/default.realm.management/access_control.write.mx: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client-reactnative/docs/planning/default.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/docs/planning/default.js -------------------------------------------------------------------------------- /client-reactnative/e2e/jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('@jest/types').Config.InitialOptions} */ 2 | module.exports = { 3 | rootDir: "..", 4 | testMatch: ["/e2e/**/*.test.js"], 5 | testTimeout: 120000, 6 | maxWorkers: 1, 7 | globalSetup: "detox/runners/jest/globalSetup", 8 | globalTeardown: "detox/runners/jest/globalTeardown", 9 | reporters: ["detox/runners/jest/reporter"], 10 | testEnvironment: "detox/runners/jest/testEnvironment", 11 | verbose: true, 12 | testRunner: "jest-circus/runner", 13 | } 14 | -------------------------------------------------------------------------------- /client-reactnative/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @format 3 | */ 4 | import "./shim" 5 | import "react-native-gesture-handler" 6 | 7 | import { AppRegistry } from "react-native" 8 | import App from "./src/App" 9 | import { name as appName } from "./app.json" 10 | import "react-native-url-polyfill/auto" 11 | 12 | AppRegistry.registerComponent(appName, () => App) 13 | -------------------------------------------------------------------------------- /client-reactnative/ios/File.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | -------------------------------------------------------------------------------- /client-reactnative/ios/RNWaveformManager.m: -------------------------------------------------------------------------------- 1 | // 2 | // RNWaveformManager.m 3 | // ethora 4 | // 5 | // Created by Михайло Могилюк on 16.11.2021. 6 | // 7 | 8 | 9 | #import "React/RCTBridgeModule.h" 10 | 11 | 12 | @interface RCT_EXTERN_MODULE(RNWaveform, NSObject) 13 | RCT_EXTERN_METHOD(loadAudioFile: (RCTPromiseResolveBlock *)resolve rejecter:(RCTPromiseRejectBlock * )reject) 14 | @end 15 | -------------------------------------------------------------------------------- /client-reactnative/ios/RTCWaveformModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // RTCWaveformModule.h 3 | // ethora 4 | // 5 | // Created by Михайло Могилюк on 16.11.2021. 6 | // 7 | #import 8 | @interface RTCWaveformModule : NSObject 9 | @end 10 | 11 | #ifndef RTCWaveformModule_h 12 | #define RTCWaveformModule_h 13 | 14 | 15 | #endif /* RTCWaveformModule_h */ 16 | -------------------------------------------------------------------------------- /client-reactnative/ios/ethora-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Use this file to import your target's public headers that you would like to expose to Swift. 3 | // 4 | 5 | -------------------------------------------------------------------------------- /client-reactnative/ios/ethora.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /client-reactnative/ios/ethora.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /client-reactnative/ios/ethora.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import 4 | 5 | @interface AppDelegate : UIResponder 6 | 7 | @property (nonatomic, strong) UIWindow *window; 8 | 9 | @end 10 | -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-20@2x.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-20@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-20@2x~ipad.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-20@3x.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-20~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-20~ipad.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-29.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-29@2x.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-29@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-29@2x~ipad.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-29@3x.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-29~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-29~ipad.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-40@2x.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-40@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-40@2x~ipad.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-40@3x.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-40~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-40~ipad.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-60@2x~car.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-60@2x~car.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-60@3x~car.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-60@3x~car.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-83.5@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon-83.5@2x~ipad.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon@2x.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon@2x~ipad.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon@3x.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon~ios-marketing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon~ios-marketing.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/AppIcon.appiconset/AppIcon~ipad.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/Ethora Full Logo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Ethora Full Logo.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Ethora Full Logo-1.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "Ethora Full Logo-2.png", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/Ethora Full Logo.imageset/Ethora Full Logo-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/Ethora Full Logo.imageset/Ethora Full Logo-1.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/Ethora Full Logo.imageset/Ethora Full Logo-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/Ethora Full Logo.imageset/Ethora Full Logo-2.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/Ethora Full Logo.imageset/Ethora Full Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/Ethora Full Logo.imageset/Ethora Full Logo.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/ScrollGroup1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "ScrollGroup1.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "ScrollGroup1-1.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "ScrollGroup1-2.png", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/ScrollGroup1.imageset/ScrollGroup1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/ScrollGroup1.imageset/ScrollGroup1-1.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/ScrollGroup1.imageset/ScrollGroup1-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/ScrollGroup1.imageset/ScrollGroup1-2.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/ScrollGroup1.imageset/ScrollGroup1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/ScrollGroup1.imageset/ScrollGroup1.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/Splash screen.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Splash screen.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Splash screen@2x.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "Splash screen@3x.png", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/Splash screen.imageset/Splash screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/Splash screen.imageset/Splash screen.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/Splash screen.imageset/Splash screen@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/Splash screen.imageset/Splash screen@2x.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/Images.xcassets/Splash screen.imageset/Splash screen@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/ios/ethora/Images.xcassets/Splash screen.imageset/Splash screen@3x.png -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/ethora.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | aps-environment 6 | development 7 | com.apple.developer.applesignin 8 | 9 | Default 10 | 11 | com.apple.developer.associated-domains 12 | 13 | applinks:eto.li 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /client-reactnative/ios/ethora/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | @autoreleasepool { 8 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /client-reactnative/react-native.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | project: { 3 | ios: {}, 4 | android: {}, 5 | }, 6 | assets: ["./src/assets/fonts/"], 7 | } 8 | -------------------------------------------------------------------------------- /client-reactnative/src/assets/acme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/acme.webp -------------------------------------------------------------------------------- /client-reactnative/src/assets/appleWhite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/appleWhite.png -------------------------------------------------------------------------------- /client-reactnative/src/assets/assets.d.ts: -------------------------------------------------------------------------------- 1 | declare module "*.png" 2 | -------------------------------------------------------------------------------- /client-reactnative/src/assets/chatEmpty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/chatEmpty.png -------------------------------------------------------------------------------- /client-reactnative/src/assets/coin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/coin.png -------------------------------------------------------------------------------- /client-reactnative/src/assets/fileIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fileIcon.png -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Montserrat/Montserrat-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Montserrat/Montserrat-Bold.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Montserrat/Montserrat-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Montserrat/Montserrat-Light.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Montserrat/Montserrat-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Montserrat/Montserrat-Medium.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Montserrat/Montserrat-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Montserrat/Montserrat-Regular.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Montserrat/Montserrat-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Montserrat/Montserrat-SemiBold.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Montserrat/Montserrat-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Montserrat/Montserrat-Thin.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Poppins-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Poppins-Black.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Poppins-BlackItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Poppins-BlackItalic.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Poppins-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Poppins-Bold.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Poppins-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Poppins-BoldItalic.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Poppins-ExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Poppins-ExtraBold.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Poppins-ExtraBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Poppins-ExtraBoldItalic.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Poppins-ExtraLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Poppins-ExtraLight.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Poppins-ExtraLightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Poppins-ExtraLightItalic.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Poppins-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Poppins-Italic.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Poppins-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Poppins-Light.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Poppins-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Poppins-LightItalic.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Poppins-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Poppins-Medium.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Poppins-MediumItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Poppins-MediumItalic.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Poppins-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Poppins-Regular.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Poppins-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Poppins-SemiBold.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Poppins-SemiBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Poppins-SemiBoldItalic.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Poppins-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Poppins-Thin.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/Poppins-ThinItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/Poppins-ThinItalic.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/fonts/VarelaRound/VarelaRound-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/fonts/VarelaRound/VarelaRound-Regular.ttf -------------------------------------------------------------------------------- /client-reactnative/src/assets/google-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/google-logo.png -------------------------------------------------------------------------------- /client-reactnative/src/assets/login_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/login_background.png -------------------------------------------------------------------------------- /client-reactnative/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/logo.png -------------------------------------------------------------------------------- /client-reactnative/src/assets/poweredBy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/poweredBy.png -------------------------------------------------------------------------------- /client-reactnative/src/assets/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/splash.png -------------------------------------------------------------------------------- /client-reactnative/src/assets/transactions-empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/transactions-empty.png -------------------------------------------------------------------------------- /client-reactnative/src/assets/tutorials/slide1Img1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/tutorials/slide1Img1.png -------------------------------------------------------------------------------- /client-reactnative/src/assets/tutorials/slide2Img1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/tutorials/slide2Img1.png -------------------------------------------------------------------------------- /client-reactnative/src/assets/tutorials/slide2Img2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/tutorials/slide2Img2.png -------------------------------------------------------------------------------- /client-reactnative/src/assets/tutorials/slide2Img3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/tutorials/slide2Img3.png -------------------------------------------------------------------------------- /client-reactnative/src/assets/tutorials/slide3Img1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/tutorials/slide3Img1.png -------------------------------------------------------------------------------- /client-reactnative/src/assets/tutorials/slide3Img2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/tutorials/slide3Img2.png -------------------------------------------------------------------------------- /client-reactnative/src/assets/tutorials/slide4Img1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/tutorials/slide4Img1.png -------------------------------------------------------------------------------- /client-reactnative/src/assets/tutorials/slide4Img2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-reactnative/src/assets/tutorials/slide4Img2.png -------------------------------------------------------------------------------- /client-reactnative/src/components/Modals/Chat/types.ts: -------------------------------------------------------------------------------- 1 | export interface IDataForTransfer { 2 | name: string 3 | message_id: string 4 | senderName: string 5 | walletFromJid: string 6 | chatJid: string 7 | } 8 | -------------------------------------------------------------------------------- /client-reactnative/src/components/Separator.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import { StyleSheet, View } from "react-native" 3 | import { 4 | widthPercentageToDP as wp, 5 | heightPercentageToDP as hp, 6 | } from "react-native-responsive-screen" 7 | export const Seperator = () => { 8 | return 9 | } 10 | 11 | const styles = StyleSheet.create({ 12 | seperator: { 13 | width: wp("40%"), 14 | height: 0, 15 | borderWidth: 1, 16 | borderColor: "#A1A1A1", 17 | margin: hp("1.5%"), 18 | }, 19 | }) 20 | -------------------------------------------------------------------------------- /client-reactnative/src/constants/asyncStorageConstants.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2019-2022 (c) Dappros Ltd, registered in England & Wales, registration number 11455432. All rights reserved. 3 | You may not use this file except in compliance with the License. 4 | You may obtain a copy of the License at https://github.com/dappros/ethora/blob/main/LICENSE. 5 | Note: linked open-source libraries and components may be subject to their own licenses. 6 | */ 7 | 8 | export const asyncStorageConstants = { 9 | roomsListHashMap: "roomsListHashMap", 10 | token: "userToken", 11 | } 12 | -------------------------------------------------------------------------------- /client-reactnative/src/constants/botTypes.ts: -------------------------------------------------------------------------------- 1 | export const botTypes = { 2 | deployBot: "deployBot", 3 | mintBot: "mintBot", 4 | } 5 | -------------------------------------------------------------------------------- /client-reactnative/src/constants/modalTypes.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2019-2022 (c) Dappros Ltd, registered in England & Wales, registration number 11455432. All rights reserved. 3 | You may not use this file except in compliance with the License. 4 | You may obtain a copy of the License at https://github.com/dappros/ethora/blob/main/LICENSE. 5 | Note: linked open-source libraries and components may be subject to their own licenses. 6 | */ 7 | 8 | export const modalTypes = { 9 | PRIVACYPOLICY: "PRIVACYPOLICY", 10 | LOADING: "LOADING", 11 | TOKENTRANSFER: "TOKENTRANSFER", 12 | GENERATEQR: "GENERATEQR", 13 | } 14 | -------------------------------------------------------------------------------- /client-reactnative/src/constants/realmConstants.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2019-2022 (c) Dappros Ltd, registered in England & Wales, registration number 11455432. All rights reserved. 3 | You may not use this file except in compliance with the License. 4 | You may obtain a copy of the License at https://github.com/dappros/ethora/blob/main/LICENSE. 5 | Note: linked open-source libraries and components may be subject to their own licenses. 6 | */ 7 | 8 | export const MESSAGE_SCHEMA = "message" 9 | export const CHAT_LIST_SCHEMA = "chatList" 10 | export const TRANSACTION_SCHEMA = "transaction" 11 | -------------------------------------------------------------------------------- /client-reactnative/src/constants/socialLoginConstants.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2019-2022 (c) Dappros Ltd, registered in England & Wales, registration number 11455432. All rights reserved. 3 | You may not use this file except in compliance with the License. 4 | You may obtain a copy of the License at https://github.com/dappros/ethora/blob/main/LICENSE. 5 | Note: linked open-source libraries and components may be subject to their own licenses. 6 | */ 7 | 8 | export const socialLoginType = { 9 | FACEBOOK: "facebook", 10 | GOOGLE: "google", 11 | APPLE: "apple", 12 | } 13 | -------------------------------------------------------------------------------- /client-reactnative/src/constants/transactionsFilter.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2019-2022 (c) Dappros Ltd, registered in England & Wales, registration number 11455432. All rights reserved. 3 | You may not use this file except in compliance with the License. 4 | You may obtain a copy of the License at https://github.com/dappros/ethora/blob/main/LICENSE. 5 | Note: linked open-source libraries and components may be subject to their own licenses. 6 | */ 7 | 8 | export const FILTERS = { 9 | sent: "sent", 10 | all: "all", 11 | received: "received", 12 | } 13 | -------------------------------------------------------------------------------- /client-reactnative/src/constants/walletConnect.ts: -------------------------------------------------------------------------------- 1 | import { appTitle } from "../../docs/config" 2 | 3 | export const projectId = "7858151c24b7ff1ccdac91b26abdf544" 4 | 5 | export const providerMetadata = { 6 | name: appTitle, 7 | description: appTitle, 8 | url: "https://ethora.ethoradev.com/", 9 | icons: ["https://ethora.com/resources/assets/wikiethora.png?8d970"], 10 | redirect: { 11 | native: "ethora://", 12 | universal: "https://eto.li", 13 | }, 14 | } 15 | -------------------------------------------------------------------------------- /client-reactnative/src/declarations.d.ts: -------------------------------------------------------------------------------- 1 | declare module "*.svg" { 2 | import React from "react" 3 | import { SvgProps } from "react-native-svg" 4 | const content: React.FC 5 | export default content 6 | } 7 | -------------------------------------------------------------------------------- /client-reactnative/src/helpers/banSystemMessage.ts: -------------------------------------------------------------------------------- 1 | interface BanSystemMessageProps { 2 | senderName: string 3 | name: string 4 | } 5 | 6 | export const banSystemMessage = (data: BanSystemMessageProps) => { 7 | return [ 8 | { 9 | _id: 1, 10 | text: `${data.senderName} removed by ${data.name}`, 11 | createdAt: new Date(), 12 | system: true, 13 | }, 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /client-reactnative/src/helpers/chat/Index.ts: -------------------------------------------------------------------------------- 1 | export * from "./chatLinkpattern" 2 | export * from "./createMessageObject" 3 | export * from "./createPrivateChat" 4 | export * from "./formatBytes" 5 | export * from "./formatDate" 6 | export * from "./inputTypes" 7 | export * from "./inputUtils" 8 | export * from "./openChatFromChatLink" 9 | export * from "./playCoinSound" 10 | export * from "./spliteChatJid" 11 | -------------------------------------------------------------------------------- /client-reactnative/src/helpers/chat/chatLinkpattern.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2019-2022 (c) Dappros Ltd, registered in England & Wales, registration number 11455432. All rights reserved. 3 | You may not use this file except in compliance with the License. 4 | You may obtain a copy of the License at https://github.com/dappros/ethora/blob/main/LICENSE. 5 | Note: linked open-source libraries and components may be subject to their own licenses. 6 | */ 7 | 8 | export const pattern1 = /\bhttps:\/\eto\.li\\?c=0x[0-9a-f]+_0x[0-9a-f]+/gm 9 | 10 | export const pattern2 = /\bhttps:\/\eto\.li\?c=[0-9a-f]+/gm 11 | -------------------------------------------------------------------------------- /client-reactnative/src/helpers/chat/checkIsDefaultChat.ts: -------------------------------------------------------------------------------- 1 | import { defaultChats } from "../../../docs/config" 2 | 3 | export const checkIsDefaultChat = (jid: string) => { 4 | let pureJid = "" 5 | if (jid.includes("@")) pureJid = jid.split("@")[0] 6 | else pureJid = jid 7 | 8 | if (defaultChats.find((item) => item.jid === pureJid)) return true 9 | else return false 10 | } 11 | -------------------------------------------------------------------------------- /client-reactnative/src/helpers/chat/spliteChatJid.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2019-2022 (c) Dappros Ltd, registered in England & Wales, registration number 11455432. All rights reserved. 3 | You may not use this file except in compliance with the License. 4 | You may obtain a copy of the License at https://github.com/dappros/ethora/blob/main/LICENSE. 5 | Note: linked open-source libraries and components may be subject to their own licenses. 6 | */ 7 | 8 | export const splitChatJid = (chatJid: string) => { 9 | return chatJid.split("@")[0] 10 | } 11 | -------------------------------------------------------------------------------- /client-reactnative/src/helpers/checkMimetypes.ts: -------------------------------------------------------------------------------- 1 | import { 2 | audioMimetypes, 3 | imageMimetypes, 4 | pdfMimemtype, 5 | videoMimetypes, 6 | } from "../constants/mimeTypes" 7 | 8 | export const isVideoMimetype = (mimetype: string) => { 9 | return !!videoMimetypes[mimetype] 10 | } 11 | 12 | export const isImageMimetype = (mimetype: string) => { 13 | return !!imageMimetypes[mimetype] 14 | } 15 | 16 | export const isPdfMimetype = (mimetype: string) => { 17 | return !!pdfMimemtype[mimetype] 18 | } 19 | export const isAudioMimetype = (mimetype: string) => { 20 | return audioMimetypes[mimetype] 21 | } 22 | -------------------------------------------------------------------------------- /client-reactnative/src/helpers/formatBigNumber.ts: -------------------------------------------------------------------------------- 1 | export function formatBigNumber(num: number) { 2 | const value = num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") 3 | const arr = value.split(",") 4 | if (arr[arr.length - 1] === "000") { 5 | arr.pop() 6 | return arr.join(",") + "K" 7 | } 8 | return value 9 | } 10 | -------------------------------------------------------------------------------- /client-reactnative/src/helpers/generateDocumentLink.ts: -------------------------------------------------------------------------------- 1 | import { apiModes, appEndpoint } from "../../docs/config" 2 | 3 | interface ILink { 4 | linkToken: string 5 | } 6 | 7 | export const generateDocumentLink = ({ linkToken }: ILink) => { 8 | return `${apiModes[appEndpoint]}/docs/share/${linkToken}` 9 | } 10 | -------------------------------------------------------------------------------- /client-reactnative/src/helpers/generateProfileLink.ts: -------------------------------------------------------------------------------- 1 | interface ILink { 2 | firstName: string 3 | lastName: string 4 | walletAddress: string 5 | xmppId: string 6 | linkToken?: string 7 | } 8 | 9 | export const generateProfileLink = ({ 10 | firstName, 11 | lastName, 12 | walletAddress, 13 | xmppId, 14 | linkToken, 15 | }: ILink) => { 16 | return `=profileLink&firstName=${firstName}&lastName=${lastName}&walletAddress=${walletAddress}&xmppId=${xmppId}&linkToken=${ 17 | linkToken ?? "" 18 | }` 19 | } 20 | -------------------------------------------------------------------------------- /client-reactnative/src/helpers/getYoutubeMetadata.ts: -------------------------------------------------------------------------------- 1 | import axios from "axios" 2 | 3 | export const getYoutubeMetadata = async (url: string) => { 4 | const metaUrl = `https://www.youtube.com/oembed?url=${url}&format=json` 5 | const config = { 6 | method: "get", 7 | url: metaUrl, 8 | headers: {}, 9 | } 10 | return await axios(config).catch((err) => console.log(JSON.stringify(err))) 11 | } 12 | -------------------------------------------------------------------------------- /client-reactnative/src/helpers/isAddress.ts: -------------------------------------------------------------------------------- 1 | export const isAddress = (address: string) => { 2 | // check if it has the basic requirements of an address 3 | return address.startsWith("0x") 4 | } 5 | -------------------------------------------------------------------------------- /client-reactnative/src/helpers/weiToNormalUnits.ts: -------------------------------------------------------------------------------- 1 | export const weiToNormalUnits = (wei: number) => { 2 | const divider = 10 ** 17 3 | return wei / divider 4 | } 5 | -------------------------------------------------------------------------------- /client-reactnative/src/hooks/useDebounce.ts: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from "react" 2 | 3 | export function useDebounce(value: string, delay: number) { 4 | const [debouncedValue, setDebouncedValue] = useState(value) 5 | 6 | useEffect(() => { 7 | const timer = setTimeout(() => setDebouncedValue(value), delay || 500) 8 | 9 | return () => { 10 | clearTimeout(timer) 11 | } 12 | }, [value, delay]) 13 | 14 | return debouncedValue 15 | } 16 | -------------------------------------------------------------------------------- /client-reactnative/src/hooks/useRegisterModal.ts: -------------------------------------------------------------------------------- 1 | import { useState } from "react" 2 | 3 | export const useRegisterModal = () => { 4 | const [firstName, setFirstName] = useState("") 5 | const [lastName, setLastName] = useState("") 6 | const [modalOpen, setModalOpen] = useState(false) 7 | 8 | return { 9 | firstName, 10 | lastName, 11 | setFirstName, 12 | setLastName, 13 | modalOpen, 14 | setModalOpen, 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /client-reactnative/src/imports.d.ts: -------------------------------------------------------------------------------- 1 | declare module "react-native-typing-animation" 2 | declare module "react-native-slider" 3 | declare module "@xmpp/client" 4 | declare module "pngjs/browser" 5 | declare module "diff" 6 | -------------------------------------------------------------------------------- /client-reactnative/tsconfig.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "compilerOptions": { 4 | "target": "ES2022", 5 | "jsx": "react", 6 | "module": "ES2022", 7 | "moduleResolution": "node", 8 | "allowSyntheticDefaultImports": true, 9 | 10 | /* Completeness */ 11 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ 12 | }, 13 | "exclude": [ 14 | "node_modules", "babel.config.js", "metro.config.js", "jest.config.js", "**/*.spec.ts", "**/*.test.ts" 15 | ], 16 | "include": ["./src/**/*.tsx", "./src/**/*.ts"] 17 | } 18 | -------------------------------------------------------------------------------- /client-web-install/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { browser: true, es2020: true }, 3 | extends: [ 4 | 'eslint:recommended', 5 | 'plugin:@typescript-eslint/recommended', 6 | 'plugin:react-hooks/recommended', 7 | ], 8 | parser: '@typescript-eslint/parser', 9 | parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, 10 | plugins: ['react-refresh'], 11 | rules: { 12 | 'react-refresh/only-export-components': 'warn', 13 | }, 14 | } 15 | -------------------------------------------------------------------------------- /client-web-install/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /client-web-install/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Ethora Install 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /client-web-install/postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /client-web-install/src/App.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web-install/src/App.css -------------------------------------------------------------------------------- /client-web-install/src/Layouts/Layout.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Header } from "../components/Header"; 3 | 4 | interface Props { 5 | children: React.ReactNode; 6 | } 7 | 8 | export const Layout: React.FC = ({ children }) => { 9 | return ( 10 | <> 11 |
12 | {children} 13 | 14 | ); 15 | }; 16 | -------------------------------------------------------------------------------- /client-web-install/src/api/api.ts: -------------------------------------------------------------------------------- 1 | import axios from "axios"; 2 | 3 | const url = new URL(window.location.href) 4 | const baseURL = url.origin 5 | export const http = axios.create({ 6 | baseURL: baseURL 7 | }) -------------------------------------------------------------------------------- /client-web-install/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web-install/src/assets/logo.png -------------------------------------------------------------------------------- /client-web-install/src/components/Header.tsx: -------------------------------------------------------------------------------- 1 | import { Link, useNavigate } from "react-router-dom"; 2 | import logo from "../assets/logo.png"; 3 | 4 | export function Header() { 5 | const navigate = useNavigate(); 6 | 7 | return ( 8 |
9 | 14 |
15 | ); 16 | } 17 | -------------------------------------------------------------------------------- /client-web-install/src/index.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /client-web-install/src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom/client"; 3 | 4 | import "./index.css"; 5 | import { Router } from "./Router"; 6 | 7 | ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( 8 | 9 | 10 | 11 | ); 12 | -------------------------------------------------------------------------------- /client-web-install/src/pages/ErrorPage.tsx: -------------------------------------------------------------------------------- 1 | import { useRouteError } from "react-router-dom"; 2 | 3 | export function ErrorPage() { 4 | const error = useRouteError(); 5 | 6 | return ( 7 |
8 |

Oops!

9 |

Sorry, an unexpected error has occurred.

10 |

11 | Page Not Found 12 |

13 |
14 | ); 15 | } -------------------------------------------------------------------------------- /client-web-install/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /client-web-install/tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | export default { 3 | content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"], 4 | theme: { 5 | extend: {}, 6 | }, 7 | plugins: [], 8 | }; 9 | -------------------------------------------------------------------------------- /client-web-install/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "skipLibCheck": true, 5 | "module": "ESNext", 6 | "moduleResolution": "bundler", 7 | "allowSyntheticDefaultImports": true 8 | }, 9 | "include": ["vite.config.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /client-web-install/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | server: { 8 | port: 3000 9 | }, 10 | }) 11 | -------------------------------------------------------------------------------- /client-web/.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /client-web/.env-example: -------------------------------------------------------------------------------- 1 | 2 | # production 3 | # REACT_APP_PRODUCTION_MODE=true 4 | 5 | # development 6 | 7 | 8 | VITE_APP_API_URL=https://api.ethoradev.com/v1 9 | 10 | VITE_APP_DISABLE_STRICT=true 11 | VITE_APP_DOMAIN_NAME=ethoradev.com 12 | 13 | VITE_APP_XMPP_BASEDOMAIN=xmpp.com 14 | -------------------------------------------------------------------------------- /client-web/.eslintignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /client-web/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | .yarn 11 | .yarnrc.yml 12 | 13 | # production 14 | 15 | 16 | # misc 17 | .DS_Store 18 | .env 19 | .env.local 20 | .env.development.local 21 | .env.test.local 22 | .env.production.local 23 | 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | 28 | .env 29 | .env-local 30 | /.ready 31 | 32 | ./build 33 | -------------------------------------------------------------------------------- /client-web/Makefile: -------------------------------------------------------------------------------- 1 | REGISTRY=test 2 | IMAGE_TAG=1 3 | build-frontend: 4 | docker build --file ./Dockerfile.build --tag=${REGISTRY}/ethora-frontend:${IMAGE_TAG} -------------------------------------------------------------------------------- /client-web/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.7" 2 | services: 3 | frontend: 4 | image: dappros/web 5 | restart: always 6 | ports: 7 | - "8080:80" 8 | volumes: 9 | - ./init.sh:/init.sh 10 | environment: 11 | - API_URL=https://xxx.domain.con/v1 12 | - APP_DOMAIN=domain.com 13 | command: 14 | [ 15 | "sh", 16 | "/init.sh" 17 | ] -------------------------------------------------------------------------------- /client-web/dockerfolder/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:19-alpine as builder 2 | 3 | WORKDIR /app 4 | 5 | COPY ./package.json ./yarn.lock ./ 6 | RUN yarn install && yarn cache clean 7 | 8 | COPY ./ ./ 9 | ENV VITE_APP_API_URL=https://api.ethoradev.com 10 | ENV VITE_APP_DISABLE_STRICT=true 11 | ENV VITE_APP_DOMAIN_NAME=domainxxx.com 12 | ENV VITE_APP_XMPP_BASEDOMAIN=xmpp.com 13 | 14 | RUN yarn build 15 | 16 | FROM nginx:1.17-alpine 17 | 18 | RUN apk add --no-cache curl 19 | 20 | COPY ./default.conf /etc/nginx/conf.d 21 | 22 | WORKDIR /app 23 | 24 | COPY --from=builder /app/build ./public -------------------------------------------------------------------------------- /client-web/init.sh: -------------------------------------------------------------------------------- 1 | grep -rl 'https://api.ethoradev.com' /app/public | xargs sed -i "s@https://api.ethoradev.com@$API_URL@g" 2 | grep -rl 'domainxxx.com' /app/public | xargs sed -i "s@domainxxx.com@$APP_DOMAIN@g" 3 | 4 | nginx -g "daemon off;" 5 | -------------------------------------------------------------------------------- /client-web/public/coin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/coin.png -------------------------------------------------------------------------------- /client-web/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/favicon.ico -------------------------------------------------------------------------------- /client-web/public/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/favicon.png -------------------------------------------------------------------------------- /client-web/public/images/1_Final_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/images/1_Final_2.png -------------------------------------------------------------------------------- /client-web/public/images/2_Final_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/images/2_Final_2.png -------------------------------------------------------------------------------- /client-web/public/images/3_Final_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/images/3_Final_2.png -------------------------------------------------------------------------------- /client-web/public/images/4_Final_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/images/4_Final_2.png -------------------------------------------------------------------------------- /client-web/public/images/5_Final_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/images/5_Final_2.png -------------------------------------------------------------------------------- /client-web/public/images/6_Final_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/images/6_Final_2.png -------------------------------------------------------------------------------- /client-web/public/images/Builder-demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/images/Builder-demo.gif -------------------------------------------------------------------------------- /client-web/public/images/android-icon-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/images/android-icon-36x36.png -------------------------------------------------------------------------------- /client-web/public/images/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/images/apple-icon-57x57.png -------------------------------------------------------------------------------- /client-web/public/images/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/images/apple-icon.png -------------------------------------------------------------------------------- /client-web/public/images/dpp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/images/dpp.png -------------------------------------------------------------------------------- /client-web/public/images/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/images/favicon-16x16.png -------------------------------------------------------------------------------- /client-web/public/images/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/images/favicon-32x32.png -------------------------------------------------------------------------------- /client-web/public/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/images/favicon.ico -------------------------------------------------------------------------------- /client-web/public/images/robot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/images/robot.png -------------------------------------------------------------------------------- /client-web/public/images/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/images/user.png -------------------------------------------------------------------------------- /client-web/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/logo192.png -------------------------------------------------------------------------------- /client-web/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/logo512.png -------------------------------------------------------------------------------- /client-web/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /client-web/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /client-web/public/tokenSounds/token1.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/tokenSounds/token1.mp3 -------------------------------------------------------------------------------- /client-web/public/tokenSounds/token3.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/tokenSounds/token3.mp3 -------------------------------------------------------------------------------- /client-web/public/tokenSounds/token5.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/tokenSounds/token5.mp3 -------------------------------------------------------------------------------- /client-web/public/tokenSounds/token7.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/public/tokenSounds/token7.mp3 -------------------------------------------------------------------------------- /client-web/src/assets/images/1_Final_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/src/assets/images/1_Final_2.png -------------------------------------------------------------------------------- /client-web/src/assets/images/2_Final_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/src/assets/images/2_Final_2.png -------------------------------------------------------------------------------- /client-web/src/assets/images/3_Final_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/src/assets/images/3_Final_2.png -------------------------------------------------------------------------------- /client-web/src/assets/images/4_Final_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/src/assets/images/4_Final_2.png -------------------------------------------------------------------------------- /client-web/src/assets/images/5_Final_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/src/assets/images/5_Final_2.png -------------------------------------------------------------------------------- /client-web/src/assets/images/6_Final_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/src/assets/images/6_Final_2.png -------------------------------------------------------------------------------- /client-web/src/assets/images/android-icon-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/src/assets/images/android-icon-36x36.png -------------------------------------------------------------------------------- /client-web/src/assets/images/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/src/assets/images/apple-icon-57x57.png -------------------------------------------------------------------------------- /client-web/src/assets/images/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/src/assets/images/apple-icon.png -------------------------------------------------------------------------------- /client-web/src/assets/images/coin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/src/assets/images/coin.png -------------------------------------------------------------------------------- /client-web/src/assets/images/def-ava.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/src/assets/images/def-ava.png -------------------------------------------------------------------------------- /client-web/src/assets/images/dpp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/src/assets/images/dpp.png -------------------------------------------------------------------------------- /client-web/src/assets/images/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/src/assets/images/favicon-16x16.png -------------------------------------------------------------------------------- /client-web/src/assets/images/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/src/assets/images/favicon-32x32.png -------------------------------------------------------------------------------- /client-web/src/assets/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/src/assets/images/favicon.ico -------------------------------------------------------------------------------- /client-web/src/assets/images/login_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/src/assets/images/login_background.png -------------------------------------------------------------------------------- /client-web/src/assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/src/assets/images/logo.png -------------------------------------------------------------------------------- /client-web/src/assets/images/profilepic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/src/assets/images/profilepic.png -------------------------------------------------------------------------------- /client-web/src/assets/images/robot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/src/assets/images/robot.png -------------------------------------------------------------------------------- /client-web/src/assets/images/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/src/assets/images/user.png -------------------------------------------------------------------------------- /client-web/src/assets/images/waves4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/client-web/src/assets/images/waves4.png -------------------------------------------------------------------------------- /client-web/src/components/AppsTable/Loader.tsx: -------------------------------------------------------------------------------- 1 | import { CircularProgress } from "@mui/material" 2 | import { FC } from "react" 3 | 4 | interface Props { 5 | styles: Object 6 | } 7 | 8 | const Loader: FC = ({ styles }) => { 9 | return ( 10 |
20 | 21 |
22 | ) 23 | } 24 | 25 | export { Loader } 26 | -------------------------------------------------------------------------------- /client-web/src/components/AuthRoute.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | import { Redirect, Route } from "react-router-dom" 3 | import { useStoreState } from "../store" 4 | 5 | export default function AuthRoute({ component: Component, ...rest }) { 6 | const user = useStoreState((state) => state.user) 7 | return ( 8 | 11 | user.firstName ? ( 12 | 13 | ) : ( 14 | 15 | ) 16 | } 17 | > 18 | ) 19 | } 20 | -------------------------------------------------------------------------------- /client-web/src/components/FullPageSpinner.tsx: -------------------------------------------------------------------------------- 1 | import { Box, CircularProgress } from "@mui/material" 2 | import React from "react" 3 | 4 | export const FullPageSpinner = () => { 5 | return ( 6 | 14 | 15 | 16 | ) 17 | } 18 | -------------------------------------------------------------------------------- /client-web/src/components/NoDataImage.scss: -------------------------------------------------------------------------------- 1 | .noDataImg { 2 | background: url('../assets/empty_dashboard.svg') no-repeat -204px -550px; 3 | height: 98px!important; 4 | width: 142px; 5 | } -------------------------------------------------------------------------------- /client-web/src/components/NoDataImage.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | import "./NoDataImage.scss" 3 | 4 | export default function NoDataImage() { 5 | return
6 | } 7 | -------------------------------------------------------------------------------- /client-web/src/config.ts: -------------------------------------------------------------------------------- 1 | export const config = { 2 | DOMAIN_NAME: import.meta.env.VITE_APP_DOMAIN_NAME, 3 | API_URL: import.meta.env.VITE_APP_API_URL, 4 | IS_PRODUCTION: 5 | import.meta.env.VITE_APP_PRODUCTION_MODE === "true" ? true : false, 6 | STRIPE_PUBLISHABLE_KEY: import.meta.env.VITE_APP_STRIPE_PUBLISHABLE_KEY, 7 | STRIPE_SECRET_KEY: import.meta.env.VITE_APP_STRIPE_SECRET_KEY, 8 | DISABLE_STRICT: import.meta.env.VITE_APP_DISABLE_STRICT, 9 | } 10 | -------------------------------------------------------------------------------- /client-web/src/connector.ts: -------------------------------------------------------------------------------- 1 | import { InjectedConnector } from "@web3-react/injected-connector" 2 | 3 | export const injected = new InjectedConnector({ 4 | supportedChainIds: [1, 3, 4, 5, 42], 5 | }) 6 | -------------------------------------------------------------------------------- /client-web/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnvironment { 4 | readonly VITE_APP_API_URL: string 5 | readonly VITE_APP_DISABLE_STRICT: string 6 | readonly VITE_APP_DOMAIN_NAME: string 7 | 8 | // more env variables... 9 | } 10 | 11 | interface ImportMeta { 12 | readonly env: ImportMetaEnvironment 13 | } 14 | -------------------------------------------------------------------------------- /client-web/src/hooks/useDebounce.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from "react" 2 | 3 | function useDebounce(value: T, delay?: number): T { 4 | const [debouncedValue, setDebouncedValue] = useState(value) 5 | 6 | useEffect(() => { 7 | const timer = setTimeout(() => setDebouncedValue(value), delay || 500) 8 | 9 | return () => { 10 | clearTimeout(timer) 11 | } 12 | }, [value, delay]) 13 | 14 | return debouncedValue 15 | } 16 | 17 | export default useDebounce 18 | -------------------------------------------------------------------------------- /client-web/src/index.css: -------------------------------------------------------------------------------- 1 | input::-webkit-color-swatch { 2 | border: none; 3 | } 4 | -------------------------------------------------------------------------------- /client-web/src/pages/AppEdit/Appearance.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import AppBuilder from "../AppBuilder/AppBuilder" 3 | 4 | export interface IAppearance {} 5 | 6 | export const Appearance: React.FC = ({}) => { 7 | return 8 | } 9 | -------------------------------------------------------------------------------- /client-web/src/pages/ChatInRoom/index.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import Container from "@mui/material/Container" 3 | import { ChatInRoom } from "./Chat" 4 | 5 | export default function Chat() { 6 | return ( 7 | 8 | 9 | 10 | ) 11 | } 12 | -------------------------------------------------------------------------------- /client-web/src/pages/ChatInRoom/theme/default/components/_input-toolbox.scss: -------------------------------------------------------------------------------- 1 | @import "../variables"; 2 | @import "../helpers/mixins"; 3 | 4 | .#{$prefix}-input-toolbox { 5 | box-sizing: border-box; 6 | @include flex-row; 7 | justify-content: flex-end; 8 | margin: $input-toolbox-margin; 9 | padding: $input-toolbox-padding; 10 | 11 | & .#{$prefix}-button { 12 | @include reset-button; 13 | margin: $input-toolbox-btn-margin; 14 | font-size: $input-toolbox-btn-font-size; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /client-web/src/pages/ChatInRoom/theme/default/exports.scss: -------------------------------------------------------------------------------- 1 | @import "variables"; 2 | 3 | // Experimental! Export theme variables for Webpack 4 | // 5 | // Exported variables can be loaded by Webpack and used in Javascript 6 | // This file is not included in css build 7 | 8 | :export { 9 | buttonInfoColor: $button-info-color; 10 | } 11 | -------------------------------------------------------------------------------- /client-web/src/pages/ChatInRoom/theme/default/helpers/_functions.scss: -------------------------------------------------------------------------------- 1 | @function rgba-to-rgb($rgba, $background: #fff) { 2 | @return mix(rgb(red($rgba), green($rgba), blue($rgba)), $background, alpha($rgba) * 100%) 3 | } 4 | 5 | @function color-by-background($bg-color, $text-color, $inverted-text-color) { 6 | @if (lightness( $bg-color ) > 40) { 7 | @return $text-color; 8 | } 9 | @else { 10 | @return $inverted-text-color; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /client-web/src/pages/Dashboard/Graph.scss: -------------------------------------------------------------------------------- 1 | .dashboard-graph { 2 | display: inline-flex; 3 | flex-direction: column; 4 | align-items: center; 5 | border-bottom: 5px solid #0073e6; 6 | background-color: white; 7 | margin-top: 10px; 8 | 9 | .title { 10 | font-size: 15px; 11 | font-weight: bolder; 12 | text-decoration: none; 13 | color: #007bff; 14 | } 15 | 16 | .title:visited { 17 | color: #007bff; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /client-web/src/pages/Payments/index.tsx: -------------------------------------------------------------------------------- 1 | import { Subscriptions } from "./Subscriptions" 2 | import { withStripe } from "./withStripe" 3 | 4 | const Subscription = withStripe(Subscriptions) 5 | export default Subscription 6 | -------------------------------------------------------------------------------- /client-web/src/pages/Profile/index.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import { useStoreState } from "../../store" 3 | import { useParams } from "react-router-dom" 4 | import { MyProfile } from "./MyProfile" 5 | import { OtherProfile } from "./OtherProfile" 6 | 7 | export default function Profile() { 8 | const user = useStoreState((state) => state.user) 9 | const parameters: { wallet: string } = useParams() 10 | 11 | return user.walletAddress === parameters.wallet ? ( 12 | 13 | ) : ( 14 | 15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /client-web/src/pages/Signon/Tnc.scss: -------------------------------------------------------------------------------- 1 | .tnc { 2 | .text-center { 3 | align-content: center; 4 | } 5 | } -------------------------------------------------------------------------------- /client-web/src/pages/UsersPage/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | import Container from "@mui/material/Container" 3 | import UsersTable from "../Owner/Users" 4 | import Box from "@mui/material/Box" 5 | 6 | export default function UsersPage() { 7 | return ( 8 | 14 | 15 | 16 | 17 | 18 | ) 19 | } 20 | -------------------------------------------------------------------------------- /client-web/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable unicorn/filename-case */ 2 | /// 3 | -------------------------------------------------------------------------------- /client-web/src/reportWebVitals.ts: -------------------------------------------------------------------------------- 1 | import { ReportHandler } from "web-vitals" 2 | 3 | const reportWebVitals = (onPerfEntry?: ReportHandler) => { 4 | if (onPerfEntry && onPerfEntry instanceof Function) { 5 | import("web-vitals").then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { 6 | getCLS(onPerfEntry) 7 | getFID(onPerfEntry) 8 | getFCP(onPerfEntry) 9 | getLCP(onPerfEntry) 10 | getTTFB(onPerfEntry) 11 | }) 12 | } 13 | } 14 | 15 | export default reportWebVitals 16 | -------------------------------------------------------------------------------- /client-web/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import "@testing-library/jest-dom" 6 | -------------------------------------------------------------------------------- /client-web/src/utils/getUniqueTagsFromUsers.ts: -------------------------------------------------------------------------------- 1 | import { TSelectedIds } from "../components/UsersTable/UsersTable" 2 | 3 | export const getUniqueTagsFromUsers = (users: TSelectedIds[]) => { 4 | const uniqueTags = {} 5 | 6 | for (const user of users) { 7 | for (let index = 0; index < user.tags.length; index++) { 8 | const tag = user.tags[index] 9 | if (uniqueTags[tag]) { 10 | uniqueTags[tag] += 1 11 | } else { 12 | uniqueTags[tag] = 1 13 | } 14 | } 15 | } 16 | return Object.entries(uniqueTags).map((item) => ({ 17 | tag: item[0], 18 | count: item[1], 19 | })) 20 | } 21 | -------------------------------------------------------------------------------- /client-web/src/utils/history.ts: -------------------------------------------------------------------------------- 1 | import { createBrowserHistory } from "history" 2 | export const history = createBrowserHistory() 3 | -------------------------------------------------------------------------------- /client-web/src/utils/playCoinSound.ts: -------------------------------------------------------------------------------- 1 | const clamp = (number_: number, min: number, max: number) => 2 | Math.min(Math.max(number_, min), max) 3 | 4 | export const playCoinSound = (amount: number) => { 5 | const clampedAmount = clamp(amount, 1, 7) 6 | const audioSource = 7 | window.location.origin + "/tokenSounds/token" + clampedAmount + ".mp3" 8 | new Audio(audioSource).play() 9 | } 10 | -------------------------------------------------------------------------------- /client-web/src/utils/walletManipulation.ts: -------------------------------------------------------------------------------- 1 | export function walletToUsername(string_: string) { 2 | if (string_) { 3 | return string_.replaceAll(/([A-Z])/g, "_$1").toLowerCase() 4 | } 5 | return "" 6 | } 7 | 8 | export function usernameToWallet(string_: string) { 9 | return string_.replaceAll(/_([a-z])/gm, (m1: string, m2: string) => { 10 | return m2.toUpperCase() 11 | }) 12 | } 13 | -------------------------------------------------------------------------------- /client-web/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "skipLibCheck": true, 5 | "module": "ESNext", 6 | "moduleResolution": "node", 7 | // "allowSyntheticDefaultImports": true 8 | }, 9 | "include": ["vite.config.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /client-web/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vite" 2 | import react from "@vitejs/plugin-react" 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | server: { 8 | port: 3000, 9 | }, 10 | build: { 11 | outDir: "build", 12 | }, 13 | define: { 14 | global: "globalThis", 15 | }, 16 | }) 17 | -------------------------------------------------------------------------------- /ethereum-contracts/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | coverage 4 | coverage.json 5 | typechain 6 | typechain-types 7 | 8 | #Hardhat files 9 | cache 10 | artifacts 11 | 12 | -------------------------------------------------------------------------------- /ethereum-contracts/hardhat.config.js: -------------------------------------------------------------------------------- 1 | require("@nomicfoundation/hardhat-toolbox"); 2 | 3 | /** @type import('hardhat/config').HardhatUserConfig */ 4 | module.exports = { 5 | solidity: "0.8.9", 6 | }; 7 | -------------------------------------------------------------------------------- /ethereum-contracts/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ethereum-contracts", 3 | "devDependencies": { 4 | "@nomicfoundation/hardhat-toolbox": "^1.0.2", 5 | "hardhat": "^2.10.1" 6 | }, 7 | "dependencies": { 8 | "@openzeppelin/contracts": "^4.7.1" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /ethora-polygon-next/.env.example: -------------------------------------------------------------------------------- 1 | # Get your projectId at https://cloud.walletconnect.com 2 | NEXT_PUBLIC_PROJECT_ID= -------------------------------------------------------------------------------- /ethora-polygon-next/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /ethora-polygon-next/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | .pnpm-debug.log* 27 | 28 | # local env files 29 | .env*.local 30 | # vercel 31 | .vercel 32 | 33 | docker 34 | 35 | # typescript 36 | *.tsbuildinfo 37 | next-env.d.ts 38 | 39 | .env 40 | 41 | ./docker 42 | -------------------------------------------------------------------------------- /ethora-polygon-next/next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | reactStrictMode: true, 4 | } 5 | 6 | module.exports = nextConfig 7 | -------------------------------------------------------------------------------- /ethora-polygon-next/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /ethora-polygon-next/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/ethora-polygon-next/public/favicon.ico -------------------------------------------------------------------------------- /ethora-polygon-next/src/assets/imgs/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/ethora-polygon-next/src/assets/imgs/logo.png -------------------------------------------------------------------------------- /ethora-polygon-next/src/components/AppFooter.tsx: -------------------------------------------------------------------------------- 1 | export default function AppFooter() { 2 | return ( 3 |
2023
4 | ) 5 | } -------------------------------------------------------------------------------- /ethora-polygon-next/src/components/AuthGuard.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect } from "react"; 2 | 3 | import { useRouter } from "next/router"; 4 | import { useAppStore } from "../store"; 5 | 6 | export function AuthGuard({children}: { children: JSX.Element }) { 7 | const router = useRouter(); 8 | const { user } = useAppStore(); 9 | 10 | useEffect(() => { 11 | if (!user.firstName && router.pathname !== '/') { 12 | // router.push('/') 13 | } 14 | }, [router, user]); 15 | 16 | return ( 17 | <>{children} 18 | ) 19 | } -------------------------------------------------------------------------------- /ethora-polygon-next/src/components/layout.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | import AppHeader from "./AppHeader"; 4 | import AppFooter from "./AppFooter"; 5 | 6 | export default function Layout({ children }: { children: React.ReactNode }) { 7 | return ( 8 |
9 | 10 |
{children}
11 | 12 |
13 | ); 14 | } 15 | -------------------------------------------------------------------------------- /ethora-polygon-next/src/constants/nfmt.ts: -------------------------------------------------------------------------------- 1 | export default [ 2 | '0x930117f3d25E23Ea34519769AaC3a043AA9d09Ef' 3 | ] -------------------------------------------------------------------------------- /ethora-polygon-next/src/hooks/useSwal.ts: -------------------------------------------------------------------------------- 1 | import Swal from 'sweetalert2' 2 | import withReactContent from 'sweetalert2-react-content' 3 | 4 | const MySwal = withReactContent(Swal) 5 | 6 | export default function useSwal() { 7 | return MySwal 8 | } -------------------------------------------------------------------------------- /ethora-polygon-next/src/http.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios' 2 | import { config } from './constants/config' 3 | 4 | const _httpClient = axios.create({ 5 | baseURL: config.apiUrl 6 | }) 7 | 8 | export const httpClient = _httpClient -------------------------------------------------------------------------------- /ethora-polygon-next/src/pages/_app.tsx: -------------------------------------------------------------------------------- 1 | import "@/styles/globals.css"; 2 | import type { AppProps } from "next/app"; 3 | import Layout from "@/components/layout"; 4 | 5 | import Web3Provider from "../context/Web3Provider"; 6 | 7 | import { AuthGuard } from "@/components/AuthGuard"; 8 | 9 | export default function App({ Component, pageProps }: AppProps) { 10 | 11 | return ( 12 | 13 | 14 | 15 | 16 | 17 | ); 18 | } 19 | -------------------------------------------------------------------------------- /ethora-polygon-next/src/pages/_document.tsx: -------------------------------------------------------------------------------- 1 | import { Html, Head, Main, NextScript } from 'next/document' 2 | 3 | export default function Document() { 4 | return ( 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /ethora-polygon-next/src/pages/api/hello.ts: -------------------------------------------------------------------------------- 1 | // Next.js API route support: https://nextjs.org/docs/api-routes/introduction 2 | import type { NextApiRequest, NextApiResponse } from 'next' 3 | 4 | type Data = { 5 | name: string 6 | } 7 | 8 | export default function handler( 9 | req: NextApiRequest, 10 | res: NextApiResponse 11 | ) { 12 | res.status(200).json({ name: 'John Doe' }) 13 | } 14 | -------------------------------------------------------------------------------- /ethora-polygon-next/src/pages/transfers.tsx: -------------------------------------------------------------------------------- 1 | export default function Transfers() { 2 | return ( 3 |
4 |

Transfer

5 |
6 |
Matic
7 |
8 |
9 | ); 10 | } 11 | -------------------------------------------------------------------------------- /ethora-polygon-next/src/store/slices/appSlice.ts: -------------------------------------------------------------------------------- 1 | import { StateCreator } from "zustand"; 2 | 3 | export interface App { 4 | error: string 5 | } 6 | 7 | export interface AppSlice { 8 | app: App; 9 | setError: (msg: string) => void; 10 | removeError: () => void; 11 | } 12 | 13 | export const createAppSlice: StateCreator = (set) => ({ 14 | app: { 15 | error: '' 16 | }, 17 | setError: (msg: string) => { 18 | set({app: {error: msg}}) 19 | }, 20 | removeError: () => { 21 | set({app: {error: ''}}) 22 | } 23 | }) -------------------------------------------------------------------------------- /ethora-polygon-next/src/styles/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | .required::after { 6 | content: " *"; 7 | } -------------------------------------------------------------------------------- /ethora-polygon-next/tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: [ 4 | "./src/**/*.{js,ts,jsx,tsx}", 5 | ], 6 | theme: { 7 | extend: {}, 8 | }, 9 | darkMode: 'class', 10 | plugins: [], 11 | } 12 | -------------------------------------------------------------------------------- /ethora-polygon-server/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | docker 4 | dist 5 | uploads -------------------------------------------------------------------------------- /ethora-polygon-server/README.md: -------------------------------------------------------------------------------- 1 | # Experimental Polygon version 2 | 3 | Main version of Ethora uses the vanilla Ethereum L2 network and mainnet for its web3 features. 4 | It is fully EVM compatible however. 5 | This is an experimental Polygon focused version of the engine. 6 | -------------------------------------------------------------------------------- /ethora-polygon-server/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.8" 2 | 3 | services: 4 | mongo: 5 | image: mongo 6 | restart: always 7 | volumes: 8 | - ./docker/data/mongo:/data/db 9 | ports: 10 | - "27017:27017" 11 | - "27018:27017" -------------------------------------------------------------------------------- /ethora-polygon-server/src/db/dbConnect.ts: -------------------------------------------------------------------------------- 1 | import mongoose from 'mongoose' 2 | import config from '../config' 3 | 4 | function dbConnect() { 5 | return mongoose.connect(config.mongoUri) 6 | } 7 | 8 | export default dbConnect -------------------------------------------------------------------------------- /ethora-polygon-server/src/handlers/getProfileHandler.ts: -------------------------------------------------------------------------------- 1 | import { Request, Response } from "express"; 2 | import User from "../db/models/user"; 3 | 4 | export async function getProfileHandler(req: Request, res: Response) { 5 | const { address } = req.params; 6 | const user = await User.findOne({ address }); 7 | 8 | if (!user) { 9 | return res.status(404).end(); 10 | } 11 | 12 | const { _id, firstName, lastName, profileImage } = user.toObject(); 13 | 14 | return res.send({ 15 | _id, 16 | firstName, 17 | lastName, 18 | profileImage, 19 | }); 20 | } 21 | -------------------------------------------------------------------------------- /ethora-polygon-server/src/middleware/error.ts: -------------------------------------------------------------------------------- 1 | import { NextFunction, Request, Response } from "express"; 2 | 3 | export default function (error: Error, req: Request, res: Response, next: NextFunction) { 4 | console.log('error handler') 5 | return res.status(500).send({error: error.message}) 6 | } -------------------------------------------------------------------------------- /ethora-polygon-server/src/services/pinata.ts: -------------------------------------------------------------------------------- 1 | import pinataSDK from "@pinata/sdk" 2 | import config from "../config" 3 | 4 | export const pinata = new pinataSDK(config.pinataKey, config.pinataSecret) -------------------------------------------------------------------------------- /ethora-polygon-server/src/utils/mock/images/contract1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/ethora-polygon-server/src/utils/mock/images/contract1.jpg -------------------------------------------------------------------------------- /ethora-polygon-server/src/utils/mock/images/contract2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/ethora-polygon-server/src/utils/mock/images/contract2.jpg -------------------------------------------------------------------------------- /ethora-polygon-server/src/utils/mock/images/contract3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/ethora-polygon-server/src/utils/mock/images/contract3.jpg -------------------------------------------------------------------------------- /ethora-polygon-server/src/utils/mock/json/contract1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "contract1:tokenId1", 3 | "image": "https://dapprossplatform.mypinata.cloud/ipfs/Qmb8ihtRRoo2ZdrcDsN3s8tGmYtdy62q2SQivHhZrGmS6V", 4 | "description": "contract1 description" 5 | } -------------------------------------------------------------------------------- /ethora-polygon-server/src/utils/mock/json/contract2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "contract2:tokenId1", 3 | "image": "https://dapprossplatform.mypinata.cloud/ipfs/QmRab5EMYZbwJvi4YuSCigew2mEAHqwzKYduBD8e1ic7VA", 4 | "description": "contract2:tokenId1 description" 5 | } -------------------------------------------------------------------------------- /ethora-polygon-server/src/utils/mock/json/contract22.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "contract2:tokenId2", 3 | "image": "https://dapprossplatform.mypinata.cloud/ipfs/QmY8frtU2ztziAX2mgxSHBDgVbaVEpezkA5YBDUaUrTj5J", 4 | "description": "contract2:tokenId2 description" 5 | } -------------------------------------------------------------------------------- /ethora-polygon-server/src/utils/mock/json/contract3.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "contract3:tokenId1", 3 | "image": "https://dapprossplatform.mypinata.cloud/ipfs/QmUZ7vEt1bCzsUxuthpWpPnTQtGged1p6j3nUhGqEn3tsF", 4 | "description": "contract3 description" 5 | } -------------------------------------------------------------------------------- /ethora-polygon-server/src/utils/mock/mock.ts: -------------------------------------------------------------------------------- 1 | import Nfmt from '../../db/models/nfmt' 2 | import nfmtContractsMock from './nfmtContract' 3 | 4 | const main = async () => { 5 | for (const [index, item] of nfmtContractsMock.entries()) { 6 | let nfmt = await Nfmt.findOne({contractAddress: item.contractAddress}) 7 | 8 | if (!nfmt) { 9 | const res = await Nfmt.create({ 10 | ...item 11 | }) 12 | 13 | console.log(res._id) 14 | } 15 | } 16 | } 17 | 18 | export default main -------------------------------------------------------------------------------- /ethora-polygon-server/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "outDir": "dist", 8 | "esModuleInterop": true, 9 | "strict": true, 10 | "baseUrl": "src", 11 | "paths": { 12 | "@/*": ["*"] 13 | }, 14 | }, 15 | } 16 | -------------------------------------------------------------------------------- /xmpp-web-debug/.env.example: -------------------------------------------------------------------------------- 1 | REACT_APP_XMPP_ADMIN= 2 | REACT_APP_XMPP_PASSWORD= 3 | REACT_APP_XMPP_HOST= 4 | REACT_APP_XMPP_PATH= -------------------------------------------------------------------------------- /xmpp-web-debug/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | .env 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /xmpp-web-debug/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/xmpp-web-debug/public/favicon.ico -------------------------------------------------------------------------------- /xmpp-web-debug/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/xmpp-web-debug/public/logo192.png -------------------------------------------------------------------------------- /xmpp-web-debug/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappros/ethora/ca125cb1bd50b149c0718852dcb01339423cec8e/xmpp-web-debug/public/logo512.png -------------------------------------------------------------------------------- /xmpp-web-debug/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /xmpp-web-debug/src/App.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | margin: 0; 3 | padding: 0; 4 | } -------------------------------------------------------------------------------- /xmpp-web-debug/src/App.test.js: -------------------------------------------------------------------------------- 1 | import { render, screen } from '@testing-library/react'; 2 | import App from './App'; 3 | 4 | test('renders learn react link', () => { 5 | render(); 6 | const linkElement = screen.getByText(/learn react/i); 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | -------------------------------------------------------------------------------- /xmpp-web-debug/src/components/AppNav.jsx: -------------------------------------------------------------------------------- 1 | import {Link } from "react-router-dom"; 2 | import styles from "./AppNav.module.css"; 3 | 4 | export default function AppNav() { 5 | return ( 6 |
7 | chats 8 | debug 9 |
10 | ); 11 | } 12 | -------------------------------------------------------------------------------- /xmpp-web-debug/src/components/AppNav.module.css: -------------------------------------------------------------------------------- 1 | a { 2 | padding-right: 10px; 3 | text-transform: uppercase; 4 | } -------------------------------------------------------------------------------- /xmpp-web-debug/src/constants.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | XMPP_SERVICE: 'wss://dev.dxmpp.com:5443/ws', 3 | XMPP_CONFERENCE: 'conference.dev.dxmpp.com' 4 | } 5 | 6 | // module.exports = { 7 | // XMPP_SERVICE: 'wss://xmpp.qa.ethoradev.com:5443/ws', 8 | // XMPP_CONFERENCE: 'conference.xmpp.qa.ethoradev.com' 9 | // } -------------------------------------------------------------------------------- /xmpp-web-debug/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 5 | sans-serif; 6 | -webkit-font-smoothing: antialiased; 7 | -moz-osx-font-smoothing: grayscale; 8 | } 9 | 10 | code { 11 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', 12 | monospace; 13 | } 14 | -------------------------------------------------------------------------------- /xmpp-web-debug/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | import reportWebVitals from './reportWebVitals'; 5 | 6 | 7 | const root = ReactDOM.createRoot(document.getElementById('root')); 8 | root.render( 9 | 10 | 11 | 12 | ); 13 | 14 | // If you want to start measuring performance in your app, pass a function 15 | // to log results (for example: reportWebVitals(console.log)) 16 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals 17 | reportWebVitals(); 18 | -------------------------------------------------------------------------------- /xmpp-web-debug/src/pages/ChatPage/ChatPage.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | height: 100vh; 3 | padding: 20px; 4 | } 5 | 6 | .chat { 7 | display: flex; 8 | height: 500px 9 | } 10 | 11 | .list { 12 | padding: 10px; 13 | width: 200px; 14 | } 15 | 16 | .main { 17 | padding: 10px; 18 | display: flex; 19 | flex: 1; 20 | border: 1px solid black; 21 | } -------------------------------------------------------------------------------- /xmpp-web-debug/src/reportWebVitals.js: -------------------------------------------------------------------------------- 1 | const reportWebVitals = onPerfEntry => { 2 | if (onPerfEntry && onPerfEntry instanceof Function) { 3 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { 4 | getCLS(onPerfEntry); 5 | getFID(onPerfEntry); 6 | getFCP(onPerfEntry); 7 | getLCP(onPerfEntry); 8 | getTTFB(onPerfEntry); 9 | }); 10 | } 11 | }; 12 | 13 | export default reportWebVitals; 14 | -------------------------------------------------------------------------------- /xmpp-web-debug/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /xmpp-web-debug/src/store/createChatSlice.js: -------------------------------------------------------------------------------- 1 | export const createChatSlice = (set) => ({ 2 | isConnected: false, 3 | setConnected: (isConnected) => set((state) => ({...state, isConnected: isConnected})) 4 | }) -------------------------------------------------------------------------------- /xmpp-web-debug/src/store/createFishSlice.js: -------------------------------------------------------------------------------- 1 | export const createFishSlice = (set) => ({ 2 | fishes: 0, 3 | addFish: () => set((state) => ({ fishes: state.fishes + 1 })), 4 | }) -------------------------------------------------------------------------------- /xmpp-web-debug/src/store/index.js: -------------------------------------------------------------------------------- 1 | import { create } from 'zustand' 2 | import { createUserSlice } from './createUserSlice' 3 | import { createFishSlice } from './createFishSlice' 4 | import {createChatSlice} from './createChatSlice' 5 | 6 | export const useStore = create((...a) => ({ 7 | ...createUserSlice(...a), 8 | ...createFishSlice(...a), 9 | ...createChatSlice(...a) 10 | })) 11 | 12 | window.useStore = useStore --------------------------------------------------------------------------------