gitextract_j1xfpjp2/ ├── .github/ │ └── workflows/ │ ├── release_build.yml │ ├── server_ci.yml │ ├── server_deploy.yml │ ├── web_ci.yml │ ├── website-e2e.yml │ └── website_deploy.yml ├── .gitignore ├── LICENSE ├── README.md ├── server/ │ ├── .gitattributes │ ├── .gitignore │ ├── .idea/ │ │ ├── .gitignore │ │ ├── ValkyrieGo.iml │ │ ├── dataSources.xml │ │ ├── modules.xml │ │ └── vcs.xml │ ├── Makefile │ ├── config/ │ │ └── config.go │ ├── data_sources.go │ ├── docs/ │ │ ├── docs.go │ │ ├── swagger.json │ │ └── swagger.yaml │ ├── e2e_test.go │ ├── go.mod │ ├── go.sum │ ├── handler/ │ │ ├── account_handler.go │ │ ├── account_handler_test.go │ │ ├── auth_handler.go │ │ ├── auth_handler_test.go │ │ ├── bind_data.go │ │ ├── channel_handler.go │ │ ├── channel_handler_test.go │ │ ├── friend_handler.go │ │ ├── friend_handler_test.go │ │ ├── guild_handler.go │ │ ├── guild_handler_test.go │ │ ├── handler.go │ │ ├── member_handler.go │ │ ├── member_handler_test.go │ │ ├── message_handler.go │ │ ├── message_handler_test.go │ │ ├── middleware/ │ │ │ ├── auth_user.go │ │ │ ├── auth_user_test.go │ │ │ └── timeout.go │ │ ├── mime_type.go │ │ └── test_helpers.go │ ├── injection.go │ ├── main.go │ ├── mocks/ │ │ ├── ChannelRepository.go │ │ ├── ChannelService.go │ │ ├── FileRepository.go │ │ ├── FriendRepository.go │ │ ├── FriendService.go │ │ ├── GuildRepository.go │ │ ├── GuildService.go │ │ ├── MailRepository.go │ │ ├── MessageRepository.go │ │ ├── MessageService.go │ │ ├── RedisRepository.go │ │ ├── Request.go │ │ ├── SocketService.go │ │ ├── UserRepository.go │ │ └── UserService.go │ ├── model/ │ │ ├── app_constants.go │ │ ├── apperrors/ │ │ │ ├── apperrors.go │ │ │ └── httperrors.go │ │ ├── base_model.go │ │ ├── channel.go │ │ ├── direct_message.go │ │ ├── dm_member.go │ │ ├── field_error.go │ │ ├── fixture/ │ │ │ ├── channel.go │ │ │ ├── faker.go │ │ │ ├── guild.go │ │ │ ├── message.go │ │ │ ├── multipart.go │ │ │ └── user.go │ │ ├── friend.go │ │ ├── friend_request.go │ │ ├── guild.go │ │ ├── interfaces.go │ │ ├── invite.go │ │ ├── member.go │ │ ├── message.go │ │ ├── user.go │ │ └── ws_message.go │ ├── repository/ │ │ ├── channel_repository.go │ │ ├── file_repository.go │ │ ├── friend_repository.go │ │ ├── guild_repository.go │ │ ├── mail_repository.go │ │ ├── message_repository.go │ │ ├── redis_repository.go │ │ └── user_repository.go │ ├── service/ │ │ ├── channel_service.go │ │ ├── channel_service_test.go │ │ ├── friend_service.go │ │ ├── guild_service.go │ │ ├── guild_service_test.go │ │ ├── id_generator.go │ │ ├── message_service.go │ │ ├── message_service_test.go │ │ ├── password.go │ │ ├── password_test.go │ │ ├── socket_service.go │ │ ├── user_service.go │ │ └── user_service_test.go │ ├── static/ │ │ ├── asyncapi.yml │ │ ├── index.html │ │ └── js/ │ │ └── main.js │ └── ws/ │ ├── actions.go │ ├── client.go │ ├── hub.go │ └── room.go └── web/ ├── .eslintrc.json ├── .gitignore ├── .prettierrc ├── cypress/ │ ├── e2e/ │ │ ├── account.cy.ts │ │ ├── channel.cy.ts │ │ ├── friend.cy.ts │ │ ├── guild.cy.ts │ │ ├── member.cy.ts │ │ └── message.cy.ts │ ├── fixtures/ │ │ └── example.json │ ├── plugins/ │ │ └── index.js │ ├── support/ │ │ ├── commands.ts │ │ ├── e2e.js │ │ ├── index.d.ts │ │ └── utils.ts │ └── tsconfig.json ├── cypress.config.ts ├── package.json ├── public/ │ ├── _redirects │ ├── index.html │ ├── manifest.json │ └── robots.txt ├── src/ │ ├── App.tsx │ ├── components/ │ │ ├── common/ │ │ │ ├── GuildPills.tsx │ │ │ ├── InputField.tsx │ │ │ ├── Logo.tsx │ │ │ └── NotificationIcon.tsx │ │ ├── items/ │ │ │ ├── ChannelListItem.tsx │ │ │ ├── DMListItem.tsx │ │ │ ├── FriendsListItem.tsx │ │ │ ├── GuildListItem.tsx │ │ │ ├── MemberListItem.tsx │ │ │ ├── NotificationListItem.tsx │ │ │ ├── RequestListItem.tsx │ │ │ ├── VoiceChannelItem.tsx │ │ │ ├── css/ │ │ │ │ └── ContextMenu.css │ │ │ └── message/ │ │ │ ├── Message.tsx │ │ │ └── MessageContent.tsx │ │ ├── layouts/ │ │ │ ├── AccountBar.tsx │ │ │ ├── AppLayout.tsx │ │ │ ├── LandingLayout.tsx │ │ │ ├── VoiceBar.tsx │ │ │ ├── guild/ │ │ │ │ ├── ChannelHeader.tsx │ │ │ │ ├── Channels.tsx │ │ │ │ ├── GuildList.tsx │ │ │ │ ├── MemberList.tsx │ │ │ │ ├── VoiceChat.tsx │ │ │ │ ├── chat/ │ │ │ │ │ ├── ChatGrid.tsx │ │ │ │ │ ├── ChatScreen.tsx │ │ │ │ │ ├── FileUploadButton.tsx │ │ │ │ │ └── MessageInput.tsx │ │ │ │ └── css/ │ │ │ │ ├── ChannelScrollerCSS.ts │ │ │ │ ├── GuildScrollerCSS.ts │ │ │ │ ├── MemberScrollerCSS.ts │ │ │ │ └── MessageInput.css │ │ │ └── home/ │ │ │ ├── DMHeader.tsx │ │ │ ├── DMSidebar.tsx │ │ │ ├── css/ │ │ │ │ └── dmScrollerCSS.ts │ │ │ └── dashboard/ │ │ │ ├── FriendsDashboard.tsx │ │ │ ├── FriendsList.tsx │ │ │ ├── FriendsListHeader.tsx │ │ │ └── PendingList.tsx │ │ ├── menus/ │ │ │ ├── GuildMenu.tsx │ │ │ ├── MemberContextMenu.tsx │ │ │ ├── StyledMenuItem.tsx │ │ │ └── StyledMenuList.tsx │ │ ├── modals/ │ │ │ ├── AddFriendModal.tsx │ │ │ ├── AddGuildModal.tsx │ │ │ ├── ChangePasswordModal.tsx │ │ │ ├── ChannelSettingsModal.tsx │ │ │ ├── CreateChannelModal.tsx │ │ │ ├── CropImageModal.tsx │ │ │ ├── DeleteMessageModal.tsx │ │ │ ├── EditMemberModal.tsx │ │ │ ├── EditMessageModal.tsx │ │ │ ├── GuildSettingsModal.tsx │ │ │ ├── InviteModal.tsx │ │ │ ├── ModActionModal.tsx │ │ │ └── RemoveFriendModal.tsx │ │ └── sections/ │ │ ├── AddGuildIcon.tsx │ │ ├── DMPlaceholder.tsx │ │ ├── DateDivider.tsx │ │ ├── Footer.tsx │ │ ├── FriendsListButton.tsx │ │ ├── GlobalState.tsx │ │ ├── Hero.tsx │ │ ├── HomeIcon.tsx │ │ ├── NavBar.tsx │ │ ├── OnlineLabel.tsx │ │ ├── StartMessages.tsx │ │ ├── StyledTooltip.tsx │ │ └── UserPopover.tsx │ ├── index.tsx │ ├── lib/ │ │ ├── api/ │ │ │ ├── dtos/ │ │ │ │ ├── AuthInput.ts │ │ │ │ ├── ChannelInput.ts │ │ │ │ ├── GuildInput.ts │ │ │ │ ├── GuildMemberInput.ts │ │ │ │ ├── InviteInput.ts │ │ │ │ └── UserInput.ts │ │ │ ├── getSocket.ts │ │ │ ├── handler/ │ │ │ │ ├── account.ts │ │ │ │ ├── auth.ts │ │ │ │ ├── channel.ts │ │ │ │ ├── dm.ts │ │ │ │ ├── guilds.ts │ │ │ │ ├── members.ts │ │ │ │ └── messages.ts │ │ │ ├── setupAxios.ts │ │ │ └── ws/ │ │ │ ├── useChannelSocket.ts │ │ │ ├── useDMSocket.ts │ │ │ ├── useFriendSocket.ts │ │ │ ├── useGuildSocket.ts │ │ │ ├── useMemberSocket.ts │ │ │ ├── useMessageSocket.ts │ │ │ ├── useRequestSocket.ts │ │ │ └── useVoiceSocket.ts │ │ ├── models/ │ │ │ ├── account.ts │ │ │ ├── channel.ts │ │ │ ├── dm.ts │ │ │ ├── fieldError.ts │ │ │ ├── friend.ts │ │ │ ├── guild.ts │ │ │ ├── member.ts │ │ │ ├── message.ts │ │ │ ├── routerProps.ts │ │ │ └── voice.ts │ │ ├── stores/ │ │ │ ├── channelStore.ts │ │ │ ├── homeStore.ts │ │ │ ├── settingsStore.ts │ │ │ ├── userStore.ts │ │ │ └── voiceStore.ts │ │ └── utils/ │ │ ├── cropImage.ts │ │ ├── dateUtils.ts │ │ ├── hooks/ │ │ │ ├── useGetCurrentChannel.ts │ │ │ ├── useGetCurrentDM.ts │ │ │ ├── useGetCurrentGuild.ts │ │ │ ├── useGetFriend.ts │ │ │ └── useVoiceChat.ts │ │ ├── querykeys.ts │ │ ├── theme.ts │ │ ├── toErrorMap.ts │ │ └── validation/ │ │ ├── auth.schema.ts │ │ ├── channel.schema.ts │ │ ├── guild.schema.ts │ │ ├── member.schema.ts │ │ └── message.schema.ts │ ├── react-app-env.d.ts │ ├── routes/ │ │ ├── AuthRoute.tsx │ │ ├── ForgotPassword.tsx │ │ ├── Home.tsx │ │ ├── Invite.tsx │ │ ├── Landing.tsx │ │ ├── Login.tsx │ │ ├── Register.tsx │ │ ├── ResetPassword.tsx │ │ ├── Routes.tsx │ │ ├── Settings.tsx │ │ └── ViewGuild.tsx │ ├── setupTests.ts │ └── tests/ │ ├── fixture/ │ │ ├── accountFixture.ts │ │ ├── channelFixtures.ts │ │ ├── dmFixtures.ts │ │ ├── friendFixture.ts │ │ ├── guildFixtures.ts │ │ ├── memberFixtures.ts │ │ ├── messageFixtures.ts │ │ └── requestFixtures.ts │ ├── queries/ │ │ ├── account.test.tsx │ │ ├── channel.test.tsx │ │ ├── dm.test.tsx │ │ ├── friend.test.tsx │ │ ├── guild.test.tsx │ │ ├── member.test.tsx │ │ ├── message.test.tsx │ │ └── request.test.tsx │ └── testUtils.tsx └── tsconfig.json