├── frontend
├── .env
├── src
│ ├── pages
│ │ ├── Home
│ │ │ ├── index.ts
│ │ │ └── TopTweetActions
│ │ │ │ └── index.ts
│ │ ├── Lists
│ │ │ ├── index.ts
│ │ │ ├── ListsItem
│ │ │ │ ├── index.ts
│ │ │ │ ├── ListsItemAvatar
│ │ │ │ │ └── index.ts
│ │ │ │ └── ListInfoDescription
│ │ │ │ │ └── index.ts
│ │ │ ├── UserLists
│ │ │ │ ├── index.ts
│ │ │ │ └── UserListsStyles.ts
│ │ │ ├── ListsHeader
│ │ │ │ ├── index.ts
│ │ │ │ └── CreateListsModal
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── CreateListsModalInput
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── CreateListsModalInputStyles.tsx
│ │ │ ├── PinnedLists
│ │ │ │ ├── index.ts
│ │ │ │ ├── PinnedListsItem
│ │ │ │ │ └── index.ts
│ │ │ │ └── PinnedListsStyles.ts
│ │ │ ├── DiscoverLists
│ │ │ │ └── index.ts
│ │ │ ├── ListsMemberships
│ │ │ │ └── index.ts
│ │ │ └── PopperListWindow
│ │ │ │ ├── index.ts
│ │ │ │ ├── FollowListButton
│ │ │ │ └── index.ts
│ │ │ │ ├── PopperListWallpaper
│ │ │ │ └── index.ts
│ │ │ │ ├── UnfollowListButton
│ │ │ │ └── index.ts
│ │ │ │ ├── PopperListDescription
│ │ │ │ └── index.ts
│ │ │ │ └── PopperListInteractionCount
│ │ │ │ ├── index.ts
│ │ │ │ └── PopperListUserCount
│ │ │ │ ├── index.ts
│ │ │ │ └── PopperListUserCountStyles.ts
│ │ ├── Login
│ │ │ └── index.ts
│ │ ├── Connect
│ │ │ └── index.ts
│ │ ├── Explore
│ │ │ ├── index.ts
│ │ │ ├── UsersList
│ │ │ │ └── index.ts
│ │ │ └── TweetsList
│ │ │ │ └── index.ts
│ │ ├── FullList
│ │ │ ├── index.ts
│ │ │ ├── EditListButton
│ │ │ │ ├── index.ts
│ │ │ │ ├── EditListModal
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── DeleteListModal
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ └── ManageMembersModal
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── ManageMembersInput
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ └── ManageMembersItem
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── MemberItemInfo
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── ManageMemberButton
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ └── MemberItemAvatar
│ │ │ │ │ │ └── index.ts
│ │ │ │ └── EditListButtonStyles.ts
│ │ │ ├── FullListHeader
│ │ │ │ └── index.ts
│ │ │ ├── FullListTweets
│ │ │ │ ├── index.ts
│ │ │ │ └── MembersAndFollowersModal
│ │ │ │ │ └── index.ts
│ │ │ ├── FullListWallpaper
│ │ │ │ └── index.ts
│ │ │ ├── ShareActionsModal
│ │ │ │ ├── index.ts
│ │ │ │ ├── ShareActionsItem
│ │ │ │ │ └── index.ts
│ │ │ │ ├── TweetListAction
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── TweetListModal
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── TweetListModalStyles.ts
│ │ │ │ └── CopyListLinkAction
│ │ │ │ │ └── index.ts
│ │ │ ├── FullListDescription
│ │ │ │ └── index.ts
│ │ │ ├── MembersAndFollowers
│ │ │ │ ├── index.ts
│ │ │ │ └── FullListUserCount
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── FullListUserCountStyles.ts
│ │ │ └── TopTweetsActionsModal
│ │ │ │ ├── index.ts
│ │ │ │ └── TopTweetsItem
│ │ │ │ └── index.ts
│ │ ├── Messages
│ │ │ ├── index.ts
│ │ │ ├── ActionIcon
│ │ │ │ └── index.ts
│ │ │ ├── ChatMessages
│ │ │ │ ├── index.ts
│ │ │ │ ├── ChatFooter
│ │ │ │ │ └── index.ts
│ │ │ │ ├── ChatHeader
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── ChatHeaderStyles.ts
│ │ │ │ ├── ChatMessage
│ │ │ │ │ └── index.ts
│ │ │ │ ├── ChatUserBlocked
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── ChatUserBlockedStyles.ts
│ │ │ │ ├── EmptyChatMessages
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── EmptyChatMessagesStyles.tsx
│ │ │ │ └── ChatMessagesStyles.tsx
│ │ │ ├── MessagesHeader
│ │ │ │ └── MessagesHeaderStyles.ts
│ │ │ ├── MessagesModal
│ │ │ │ └── MessagesModalStyles.tsx
│ │ │ ├── MessageSettings
│ │ │ │ └── MessageSettingsStyles.ts
│ │ │ ├── StartConversation
│ │ │ │ └── StartConversationStyles.ts
│ │ │ ├── ConversationInfo
│ │ │ │ ├── ConversationHeader
│ │ │ │ │ └── __tests__
│ │ │ │ │ │ └── ConversationHeader.test.tsx
│ │ │ │ └── ReportUserComponent
│ │ │ │ │ └── __tests__
│ │ │ │ │ └── ReportUserComponent.test.tsx
│ │ │ └── MessagesStyles.tsx
│ │ ├── Settings
│ │ │ ├── index.ts
│ │ │ ├── Account
│ │ │ │ ├── index.ts
│ │ │ │ ├── TweetDeckTeams
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── TweetDeckTeamsStyles.tsx
│ │ │ │ ├── DeactivateAccount
│ │ │ │ │ └── index.ts
│ │ │ │ ├── AccountInformation
│ │ │ │ │ ├── ChangeAge
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── ChangeEmail
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── ChangeEmailModal
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── ChangeGender
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── ChangeGenderStyles.tsx
│ │ │ │ │ ├── ChangePhone
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── DeletePhoneNumberButton
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ └── DeletePhoneModal
│ │ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── UpdatePhoneNumberButton
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ └── ChangePhoneModal
│ │ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ └── ChangePhoneStyles.ts
│ │ │ │ │ ├── ChangeCountry
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── ChangeCountryStyles.tsx
│ │ │ │ │ ├── ChangeLanguage
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── ChangeLanguageStyles.tsx
│ │ │ │ │ └── ChangeUsername
│ │ │ │ │ │ └── index.ts
│ │ │ │ └── ChangeYourPassword
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── ChangeYourPasswordStyles.tsx
│ │ │ ├── Notifications
│ │ │ │ ├── index.ts
│ │ │ │ ├── Filters
│ │ │ │ │ └── index.ts
│ │ │ │ ├── Preferences
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── EmailNotifications
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ └── PushNotifications
│ │ │ │ │ │ └── index.ts
│ │ │ │ ├── ContentPreferences
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── ExploreModal
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── ExploreModalInfo
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── RecommendationsModal
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── RecommendedLanguage
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ └── RecommendedLanguageStyles.ts
│ │ │ │ │ └── ContentPreferencesStyles.tsx
│ │ │ │ └── PersonalizationAndData
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── PersonalizationAndDataStyles.tsx
│ │ │ ├── SettingsItem
│ │ │ │ └── index.ts
│ │ │ ├── PrivacyAndSafety
│ │ │ │ ├── Spaces
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── SpacesStyles.tsx
│ │ │ │ ├── index.ts
│ │ │ │ ├── Location
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── Places
│ │ │ │ │ │ └── index.ts
│ │ │ │ ├── YourTweets
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── LocationInformation
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── LocationInformationStyles.tsx
│ │ │ │ ├── DataSharing
│ │ │ │ │ └── index.ts
│ │ │ │ ├── MuteAndBlock
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── MutedWords
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── MutedAccounts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── MutedAccountItem
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── MuteAccountInfo
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ │ ├── MuteAccountAvatar
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ │ └── MuteAccountButton
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── BlockedAccounts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── BlockedAccountItem
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── BlockAccountButton
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ │ ├── BlockedAccountInfo
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ │ └── BlockedAccountAvatar
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ └── MutedNotifications
│ │ │ │ │ │ └── index.ts
│ │ │ │ ├── AdsPreferences
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── YourAdvertiserList
│ │ │ │ │ │ └── index.ts
│ │ │ │ ├── ContentYouSee
│ │ │ │ │ └── index.ts
│ │ │ │ ├── DirectMessages
│ │ │ │ │ └── index.ts
│ │ │ │ ├── Discoverability
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── ManageContacts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── ManageContactsStyles.tsx
│ │ │ │ ├── AudienceAndTagging
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── PhotoTagging
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── PhotoTaggingStyles.tsx
│ │ │ │ │ └── AudienceAndTaggingStyles.tsx
│ │ │ │ ├── OffTwitterActivity
│ │ │ │ │ └── index.ts
│ │ │ │ └── PrivacyAndSafetyStyles.tsx
│ │ │ ├── SettingsHeader
│ │ │ │ └── index.ts
│ │ │ ├── AdditionalResources
│ │ │ │ ├── index.ts
│ │ │ │ └── AdditionalResourcesStyles.tsx
│ │ │ ├── SecurityAndAccountAccess
│ │ │ │ ├── Security
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── TwoFactorAuthentication
│ │ │ │ │ │ └── index.ts
│ │ │ │ ├── index.ts
│ │ │ │ └── AppsAndSessions
│ │ │ │ │ ├── Sessions
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── CurrentSession
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── ConnectedApps
│ │ │ │ │ └── index.ts
│ │ │ │ │ ├── LoggedDevices
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── LoggedDevicesStyles.tsx
│ │ │ │ │ └── AccountAccessHistory
│ │ │ │ │ └── index.ts
│ │ │ └── AccessibilityDisplayLanguages
│ │ │ │ ├── DataUsage
│ │ │ │ ├── index.ts
│ │ │ │ ├── Autoplay
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── AutoplayStyles.tsx
│ │ │ │ └── DataUsageStyles.tsx
│ │ │ │ ├── Languages
│ │ │ │ ├── index.ts
│ │ │ │ └── LanguagesStyles.tsx
│ │ │ │ ├── Accessibility
│ │ │ │ ├── index.ts
│ │ │ │ └── AccessibilityStyles.tsx
│ │ │ │ ├── index.ts
│ │ │ │ └── Display
│ │ │ │ └── index.ts
│ │ ├── Topics
│ │ │ ├── index.ts
│ │ │ ├── Followed
│ │ │ │ └── index.ts
│ │ │ ├── Suggested
│ │ │ │ ├── index.ts
│ │ │ │ └── __tests__
│ │ │ │ │ └── SuggestedButton.test.tsx
│ │ │ ├── TopicItem
│ │ │ │ ├── index.ts
│ │ │ │ ├── FollowTopicButton
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── FollowTopicButtonStyles.ts
│ │ │ │ └── UnfollowTopicButton
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── UnfollowTopicButtonStyles.ts
│ │ │ ├── TopicBlock
│ │ │ │ ├── index.ts
│ │ │ │ ├── TopicButton
│ │ │ │ │ └── index.ts
│ │ │ │ └── FollowedTopicButton
│ │ │ │ │ └── index.ts
│ │ │ ├── NotInterested
│ │ │ │ └── index.ts
│ │ │ └── TopicsCarousel
│ │ │ │ └── index.ts
│ │ ├── Trends
│ │ │ ├── index.ts
│ │ │ └── TrendsItem
│ │ │ │ └── index.ts
│ │ ├── UserPage
│ │ │ ├── index.ts
│ │ │ ├── UserInfo
│ │ │ │ └── index.ts
│ │ │ ├── UserAvatar
│ │ │ │ └── index.ts
│ │ │ ├── UserDetails
│ │ │ │ └── index.ts
│ │ │ ├── UserTweets
│ │ │ │ ├── index.ts
│ │ │ │ ├── EmptyLikesTab
│ │ │ │ │ └── index.ts
│ │ │ │ ├── EmptyMediaTab
│ │ │ │ │ └── index.ts
│ │ │ │ ├── EmptyRepliesTab
│ │ │ │ │ └── index.ts
│ │ │ │ ├── EmptyTweetsTab
│ │ │ │ │ └── index.ts
│ │ │ │ └── UserTweetsStyles.tsx
│ │ │ ├── UserNotFound
│ │ │ │ └── index.ts
│ │ │ ├── UserWallpaper
│ │ │ │ └── index.ts
│ │ │ ├── BlockUserButton
│ │ │ │ └── index.ts
│ │ │ ├── CancelUserButton
│ │ │ │ └── index.ts
│ │ │ ├── FollowUserButton
│ │ │ │ └── index.ts
│ │ │ ├── UserImageModal
│ │ │ │ └── index.ts
│ │ │ ├── UserPageActions
│ │ │ │ ├── index.ts
│ │ │ │ ├── BlockUserButton
│ │ │ │ │ └── index.ts
│ │ │ │ ├── MuteUserButton
│ │ │ │ │ └── index.ts
│ │ │ │ ├── UserItemAction
│ │ │ │ │ └── index.ts
│ │ │ │ ├── AddUserToListsButton
│ │ │ │ │ └── index.ts
│ │ │ │ ├── ViewUserListsButton
│ │ │ │ │ └── index.ts
│ │ │ │ ├── ViewUserTopicsButton
│ │ │ │ │ └── index.ts
│ │ │ │ └── CopyProfileLinkButton
│ │ │ │ │ └── index.ts
│ │ │ ├── UserPageHeader
│ │ │ │ └── index.ts
│ │ │ ├── EditProfileButton
│ │ │ │ ├── index.ts
│ │ │ │ ├── EditProfileModal
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── EditBirthDate
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── BirthDateSelect
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ └── EditBirthDateModal
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── EditBirthDateModalStyles.tsx
│ │ │ │ └── SetupProfileModal
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── ProfileModal
│ │ │ │ │ └── index.ts
│ │ │ │ │ ├── ProfileHeaderModal
│ │ │ │ │ └── index.ts
│ │ │ │ │ ├── ProfilePictureModal
│ │ │ │ │ └── index.ts
│ │ │ │ │ ├── ProfileUpdatedModal
│ │ │ │ │ └── index.ts
│ │ │ │ │ ├── ProfileDescriptionModal
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── ProfileDescriptionInput
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ └── SetupProfileModalStyles.tsx
│ │ │ ├── NotificationButton
│ │ │ │ └── index.ts
│ │ │ ├── UnfollowUserButton
│ │ │ │ └── index.ts
│ │ │ ├── UserBlockedMessage
│ │ │ │ └── index.ts
│ │ │ ├── UserFollowerGroup
│ │ │ │ └── index.ts
│ │ │ ├── UserUnmuteMessage
│ │ │ │ └── index.ts
│ │ │ ├── AddUserToChatButton
│ │ │ │ └── index.ts
│ │ │ ├── UserInteractionCount
│ │ │ │ ├── index.ts
│ │ │ │ ├── UserFollowersCount
│ │ │ │ │ └── index.ts
│ │ │ │ └── UserFollowingCount
│ │ │ │ │ └── index.ts
│ │ │ └── UserPrivateProfileMessage
│ │ │ │ └── index.ts
│ │ ├── Bookmarks
│ │ │ ├── index.ts
│ │ │ └── BookmarksHeader
│ │ │ │ └── index.ts
│ │ ├── FullTweet
│ │ │ ├── index.ts
│ │ │ ├── TweetGif
│ │ │ │ ├── index.ts
│ │ │ │ └── TweetGif.tsx
│ │ │ ├── TweetImage
│ │ │ │ └── index.ts
│ │ │ ├── TweetList
│ │ │ │ └── index.ts
│ │ │ ├── TweetMedia
│ │ │ │ └── index.ts
│ │ │ ├── TweetPoll
│ │ │ │ └── index.ts
│ │ │ ├── TweetQuote
│ │ │ │ └── index.ts
│ │ │ ├── TweetActions
│ │ │ │ └── index.ts
│ │ │ ├── TweetDateTime
│ │ │ │ └── index.ts
│ │ │ ├── TweetHeader
│ │ │ │ └── index.ts
│ │ │ ├── AddReplyToTweet
│ │ │ │ └── index.ts
│ │ │ ├── LikeIconButton
│ │ │ │ └── index.ts
│ │ │ ├── ReplyIconButton
│ │ │ │ ├── index.ts
│ │ │ │ └── ReplyIconButtonStyles.ts
│ │ │ ├── TweetErrorPage
│ │ │ │ ├── index.ts
│ │ │ │ └── TweetErrorPageStyles.tsx
│ │ │ ├── TweetReplyInfo
│ │ │ │ └── index.ts
│ │ │ ├── RetweetIconButton
│ │ │ │ └── index.ts
│ │ │ └── TweetInteractionCount
│ │ │ │ ├── LikesCount
│ │ │ │ └── index.ts
│ │ │ │ ├── QuotesCount
│ │ │ │ └── index.ts
│ │ │ │ ├── index.ts
│ │ │ │ └── RetweetsCount
│ │ │ │ └── index.ts
│ │ ├── Notifications
│ │ │ ├── index.ts
│ │ │ ├── MentionsTab
│ │ │ │ └── index.ts
│ │ │ ├── NotificationsTab
│ │ │ │ ├── index.ts
│ │ │ │ ├── NotificationInfo
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── NotificationInfoHeader
│ │ │ │ │ │ └── index.ts
│ │ │ │ ├── NotificationItem
│ │ │ │ │ └── index.ts
│ │ │ │ ├── NotificationAuthorItem
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── NotificationAuthorItemStyles.tsx
│ │ │ │ └── NotificationsTimeline
│ │ │ │ │ └── index.ts
│ │ │ └── EmptyNotifications
│ │ │ │ ├── index.ts
│ │ │ │ └── EmptyNotificationsStyles.tsx
│ │ ├── QuoteTweets
│ │ │ └── index.ts
│ │ ├── Authentication
│ │ │ ├── index.ts
│ │ │ ├── DialogWrapper
│ │ │ │ └── index.ts
│ │ │ ├── CustomizeModal
│ │ │ │ └── index.ts
│ │ │ ├── CreateAccountModal
│ │ │ │ └── index.ts
│ │ │ ├── RegistrationInput
│ │ │ │ └── index.ts
│ │ │ ├── RegistrationModal
│ │ │ │ └── index.ts
│ │ │ ├── SetPasswordModal
│ │ │ │ ├── index.ts
│ │ │ │ └── SetPasswordModalStyles.tsx
│ │ │ └── EmailVerificationModal
│ │ │ │ ├── index.ts
│ │ │ │ └── EmailVerificationModalStyles.tsx
│ │ ├── ForgotPassword
│ │ │ ├── index.ts
│ │ │ ├── FindEmail
│ │ │ │ └── index.ts
│ │ │ ├── ResetPassword
│ │ │ │ └── index.ts
│ │ │ ├── CheckEmailCode
│ │ │ │ └── index.ts
│ │ │ ├── ForgotPasswordTextField
│ │ │ │ └── index.ts
│ │ │ ├── ResetPasswordOption
│ │ │ │ └── index.ts
│ │ │ └── ResetPasswordSuccess
│ │ │ │ ├── index.ts
│ │ │ │ └── ResetPasswordSuccessStyles.tsx
│ │ ├── FollowersYouKnow
│ │ │ └── index.ts
│ │ └── FollowingFollowers
│ │ │ ├── index.ts
│ │ │ ├── EmptyFollowersDescription
│ │ │ ├── index.ts
│ │ │ └── EmptyFollowersDescriptionStyles.tsx
│ │ │ └── FollowingFollowersHeader
│ │ │ └── index.ts
│ ├── react-app-env.d.ts
│ ├── components
│ │ ├── TweetInput
│ │ │ └── index.ts
│ │ ├── ActionIconButton
│ │ │ └── ActionIconButtonStyles.ts
│ │ ├── CloseButton
│ │ │ └── CloseButtonStyles.tsx
│ │ ├── SideSearch
│ │ │ └── RemoveSearchResultButton
│ │ │ │ └── RemoveSearchResultButtonStyles.ts
│ │ ├── AddTweetForm
│ │ │ ├── UnsentTweetsModal
│ │ │ │ └── UnsentTweetItem
│ │ │ │ │ └── UnsentTweetsHeader
│ │ │ │ │ └── UnsentTweetsHeaderStyles.ts
│ │ │ ├── Poll
│ │ │ │ └── PollInput
│ │ │ │ │ └── PollInputField.tsx
│ │ │ ├── ScheduleDateInfo
│ │ │ │ └── ScheduleDateInfoStyles.ts
│ │ │ ├── GifIconButton
│ │ │ │ └── GifModalWindow
│ │ │ │ │ └── GifModalWindowStyles.ts
│ │ │ ├── PollIconButton
│ │ │ │ └── PollIconButtonStyles.ts
│ │ │ └── AddTweetImage
│ │ │ │ └── AddDescription
│ │ │ │ └── AddDescriptionModal
│ │ │ │ └── AddDescriptionModalStyles.ts
│ │ ├── Buttons
│ │ │ ├── FullWidthButton
│ │ │ │ └── FullWidthButtonStyles.ts
│ │ │ ├── PendingButton
│ │ │ │ └── PendingButtonStyles.ts
│ │ │ ├── FollowButton
│ │ │ │ └── FollowButtonStyles.ts
│ │ │ ├── UnfollowButton
│ │ │ │ └── UnfollowButtonStyles.ts
│ │ │ └── BlockButton
│ │ │ │ └── BlockButtonStyles.ts
│ │ ├── LockIcon
│ │ │ ├── LockIconStyles.ts
│ │ │ ├── LockIcon.tsx
│ │ │ └── __tests__
│ │ │ │ └── LockIcon.test.tsx
│ │ ├── SideMenu
│ │ │ ├── SideMenuMoreItem
│ │ │ │ └── FollowerRequestsModal
│ │ │ │ │ └── FollowerRequestsModalSyles.tsx
│ │ │ └── SideMenuHomeItem
│ │ │ │ └── SideMenuHomeItemStyles.ts
│ │ ├── BackButton
│ │ │ └── BackButtonStyles.tsx
│ │ ├── UsersItem
│ │ │ ├── PendingButton
│ │ │ │ └── PendingButtonStyles.ts
│ │ │ ├── FollowButton
│ │ │ │ └── FollowButtonStyles.ts
│ │ │ ├── UnfollowButton
│ │ │ │ └── UnfollowButtonStyles.ts
│ │ │ └── BlockButton
│ │ │ │ └── BlockButtonStyles.ts
│ │ ├── AddTweetModal
│ │ │ └── AddTweetModalStyles.tsx
│ │ ├── TweetComponent
│ │ │ ├── TweetHeader
│ │ │ │ └── TweetHeaderStyles.ts
│ │ │ ├── TweetText
│ │ │ │ └── __tests__
│ │ │ │ │ └── TweetText.test.tsx
│ │ │ ├── AnalyticsIconButton
│ │ │ │ └── AnalyticsIconButtonStyles.ts
│ │ │ └── TweetImage
│ │ │ │ └── TweetImageStyles.ts
│ │ ├── TweetImageModal
│ │ │ ├── TweetInteractionCount
│ │ │ │ ├── InteractionCount
│ │ │ │ │ └── InteractionCountStyles.ts
│ │ │ │ └── TweetInteractionCountStyles.ts
│ │ │ ├── ImageCloseButton
│ │ │ │ └── ImageCloseButtonStyles.ts
│ │ │ ├── AddReplyToTweet
│ │ │ │ └── AddReplyToTweetStyles.ts
│ │ │ └── TweetText
│ │ │ │ └── TweetTextStyles.ts
│ │ ├── QuoteIconButton
│ │ │ └── QuoteTweetModal
│ │ │ │ └── QuoteTweetModalStyles.tsx
│ │ ├── PopperUserWindow
│ │ │ └── PopperHeader
│ │ │ │ └── PopperHeaderStyles.ts
│ │ ├── PageWrapper
│ │ │ └── PageWrapperStyles.ts
│ │ ├── DialogTitleComponent
│ │ │ └── DialogTitleComponentStyles.ts
│ │ ├── ConnectToUsers
│ │ │ └── ConnectToUsersStyles.tsx
│ │ ├── FollowListButton
│ │ │ └── FollowListButtonStyles.ts
│ │ ├── TaggedImageUsers
│ │ │ └── TaggedImageUsersStyles.ts
│ │ ├── Welcome
│ │ │ └── WelcomeStyles.tsx
│ │ └── TweetDeleted
│ │ │ └── TweetDeletedStyles.tsx
│ ├── types
│ │ └── tag.ts
│ ├── store
│ │ └── ducks
│ │ │ ├── actionSnackbar
│ │ │ ├── contracts
│ │ │ │ └── state.ts
│ │ │ ├── selector.ts
│ │ │ └── actionCreators.ts
│ │ │ ├── chat
│ │ │ └── contracts
│ │ │ │ └── state.ts
│ │ │ ├── unsentTweets
│ │ │ └── contracts
│ │ │ │ └── state.ts
│ │ │ ├── followerRequests
│ │ │ └── contracts
│ │ │ │ └── state.ts
│ │ │ ├── tweetAdditionalInfo
│ │ │ └── contracts
│ │ │ │ └── state.ts
│ │ │ ├── tags
│ │ │ └── contracts
│ │ │ │ └── state.ts
│ │ │ ├── chats
│ │ │ └── contracts
│ │ │ │ └── state.ts
│ │ │ ├── userDetail
│ │ │ └── contracts
│ │ │ │ └── state.ts
│ │ │ ├── listDetail
│ │ │ └── contracts
│ │ │ │ └── state.ts
│ │ │ ├── localization
│ │ │ └── contracts
│ │ │ │ └── state.ts
│ │ │ ├── chatMessages
│ │ │ └── contracts
│ │ │ │ └── state.ts
│ │ │ └── userProfile
│ │ │ └── contracts
│ │ │ └── state.ts
│ ├── types.d.ts
│ ├── core
│ │ └── axios.ts
│ ├── hoc
│ │ └── withDocumentTitle.tsx
│ ├── hook
│ │ ├── useFocus.ts
│ │ ├── useDebounce.ts
│ │ └── useClickAway.ts
│ ├── index.tsx
│ ├── services
│ │ └── api
│ │ │ ├── tweet-service
│ │ │ └── externalApi.ts
│ │ │ └── localization-service
│ │ │ ├── gifImageApi.ts
│ │ │ ├── languageApi.ts
│ │ │ ├── wallpaperApi.ts
│ │ │ └── countryCodeApi.ts
│ ├── util
│ │ └── upload-image-helper.ts
│ └── setupTests.js
├── public
│ └── twitter.2.ico
├── babel.config.js
├── .prettierrc
└── .gitignore
├── dashboard
└── grafana
│ └── Dockerfile
├── .mvn
└── wrapper
│ ├── maven-wrapper.jar
│ └── maven-wrapper.properties
├── commons
└── src
│ └── main
│ ├── resources
│ ├── sql-test
│ │ ├── clear-tag-db.sql
│ │ ├── clear-notification-db.sql
│ │ ├── clear-scheduler-db.sql
│ │ ├── clear-localization-db.sql
│ │ ├── clear-user-db.sql
│ │ ├── clear-topic-db.sql
│ │ ├── clear-lists-db.sql
│ │ ├── clear-chat-db.sql
│ │ └── populate-tag-db.sql
│ └── application.yml
│ └── java
│ └── com
│ └── gmail
│ └── merikbest2015
│ └── commons
│ ├── enums
│ ├── ReplyType.java
│ ├── TweetType.java
│ ├── LinkCoverSize.java
│ ├── BackgroundColorType.java
│ ├── ColorSchemeType.java
│ ├── NotificationType.java
│ └── TopicCategory.java
│ ├── constants
│ ├── BatchJobConstants.java
│ ├── HeaderConstants.java
│ └── ErrorMessage.java
│ ├── dto
│ ├── response
│ │ ├── user
│ │ │ ├── TaggedUserResponse.java
│ │ │ ├── UserPrincipalResponse.java
│ │ │ └── CommonUserResponse.java
│ │ └── notification
│ │ │ ├── NotificationListResponse.java
│ │ │ ├── NotificationTweetResponse.java
│ │ │ └── NotificationUserResponse.java
│ ├── request
│ │ ├── IdsRequest.java
│ │ └── EmailRequest.java
│ ├── ImageResponse.java
│ └── HeaderResponse.java
│ ├── event
│ ├── PinTweetEvent.java
│ ├── UserEvent.java
│ ├── UpdateTweetCountEvent.java
│ ├── TweetTagEvent.java
│ ├── UpdateListsEvent.java
│ ├── ListsNotificationDto.java
│ ├── UpdateTweetEvent.java
│ ├── UserNotificationDto.java
│ ├── SendEmailEvent.java
│ └── ListsNotificationEvent.java
│ └── exception
│ └── ApiRequestException.java
├── user-service
├── src
│ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── gmail
│ │ │ └── merikbest2015
│ │ │ ├── model
│ │ │ └── UserRole.java
│ │ │ ├── constants
│ │ │ └── Regexp.java
│ │ │ ├── dto
│ │ │ ├── response
│ │ │ │ ├── LanguagesResponse.java
│ │ │ │ ├── AuthenticationResponse.java
│ │ │ │ ├── SameFollowerResponse.java
│ │ │ │ ├── UserPhoneResponse.java
│ │ │ │ ├── UserPintTweetResponse.java
│ │ │ │ ├── FollowerUserResponse.java
│ │ │ │ └── SearchResultResponse.java
│ │ │ └── request
│ │ │ │ ├── SearchTermsRequest.java
│ │ │ │ ├── UserRequest.java
│ │ │ │ └── ProcessEmailRequest.java
│ │ │ ├── repository
│ │ │ └── projection
│ │ │ │ ├── UserPrincipalProjection.java
│ │ │ │ ├── NotificationUserProjection.java
│ │ │ │ ├── SameFollower.java
│ │ │ │ ├── FollowerUserProjection.java
│ │ │ │ ├── CommonUserProjection.java
│ │ │ │ ├── UserCommonProjection.java
│ │ │ │ ├── MutedUserProjection.java
│ │ │ │ └── BlockedUserProjection.java
│ │ │ ├── service
│ │ │ ├── MuteUserService.java
│ │ │ ├── BlockUserService.java
│ │ │ └── UserUpdateTweetCountService.java
│ │ │ └── UserServiceApplication.java
│ │ └── resources
│ │ └── bootstrap.yml
└── Dockerfile
├── lombok.config
├── notification-service
├── src
│ └── main
│ │ ├── resources
│ │ ├── db
│ │ │ └── migration
│ │ │ │ ├── V3__Create_lists_table.sql
│ │ │ │ ├── V1__Create_users_table.sql
│ │ │ │ ├── V2__Create_tweets_table.sql
│ │ │ │ └── V4__Create_notifications_table.sql
│ │ └── bootstrap.yml
│ │ └── java
│ │ └── com
│ │ └── gmail
│ │ └── merikbest2015
│ │ ├── constants
│ │ └── NotificationErrorMessage.java
│ │ ├── repository
│ │ ├── UserRepository.java
│ │ ├── ListsRepository.java
│ │ └── TweetRepository.java
│ │ ├── service
│ │ ├── UserHandlerService.java
│ │ ├── ListsHandlerService.java
│ │ └── TweetHandlerService.java
│ │ └── NotificationServiceApplication.java
└── Dockerfile
├── tag-service
├── src
│ └── main
│ │ ├── resources
│ │ └── bootstrap.yml
│ │ └── java
│ │ └── com
│ │ └── gmail
│ │ └── merikbest2015
│ │ ├── constants
│ │ └── TagErrorMessage.java
│ │ ├── service
│ │ ├── TagClientService.java
│ │ └── TagHandlerService.java
│ │ ├── dto
│ │ └── TagResponse.java
│ │ └── TagServiceApplication.java
└── Dockerfile
├── api-gateway
├── Dockerfile
└── src
│ └── main
│ └── resources
│ └── bootstrap.yml
├── chat-service
├── src
│ └── main
│ │ ├── resources
│ │ └── bootstrap.yml
│ │ └── java
│ │ └── com
│ │ └── gmail
│ │ └── merikbest2015
│ │ ├── dto
│ │ ├── request
│ │ │ ├── ChatMessageRequest.java
│ │ │ └── MessageWithTweetRequest.java
│ │ └── response
│ │ │ └── UserChatResponse.java
│ │ ├── constants
│ │ └── ChatSuccessMessage.java
│ │ ├── service
│ │ └── ChatService.java
│ │ ├── repository
│ │ └── projection
│ │ │ └── ChatProjection.java
│ │ └── ChatServiceApplication.java
└── Dockerfile
├── email-service
├── src
│ └── main
│ │ ├── resources
│ │ └── bootstrap.yml
│ │ └── java
│ │ └── com
│ │ └── gmail
│ │ └── merikbest2015
│ │ └── service
│ │ └── EmailService.java
└── Dockerfile
├── image-service
├── src
│ └── main
│ │ ├── resources
│ │ └── bootstrap.yml
│ │ └── java
│ │ └── com
│ │ └── gmail
│ │ └── merikbest2015
│ │ └── service
│ │ └── ImageService.java
└── Dockerfile
├── lists-service
├── src
│ └── main
│ │ ├── resources
│ │ └── bootstrap.yml
│ │ └── java
│ │ └── com
│ │ └── gmail
│ │ └── merikbest2015
│ │ ├── service
│ │ └── ListsClientService.java
│ │ ├── constants
│ │ ├── ListsSuccessMessage.java
│ │ └── ListsErrorMessage.java
│ │ ├── repository
│ │ └── projection
│ │ │ ├── SimpleListProjection.java
│ │ │ └── PinnedListProjection.java
│ │ ├── dto
│ │ ├── request
│ │ │ └── ListsRequest.java
│ │ └── response
│ │ │ ├── PinnedListResponse.java
│ │ │ └── SimpleListResponse.java
│ │ └── ListsServiceApplication.java
└── Dockerfile
├── topic-service
├── src
│ └── main
│ │ ├── resources
│ │ └── bootstrap.yml
│ │ └── java
│ │ └── com
│ │ └── gmail
│ │ └── merikbest2015
│ │ ├── constants
│ │ └── TopicErrorMessage.java
│ │ ├── dto
│ │ └── request
│ │ │ ├── SuggestedTopicsRequest.java
│ │ │ └── TopicsCategoriesRequest.java
│ │ ├── service
│ │ └── UserService.java
│ │ ├── repository
│ │ └── projection
│ │ │ ├── FollowedTopicProjection.java
│ │ │ └── NotInterestedTopicProjection.java
│ │ └── TopicServiceApplication.java
└── Dockerfile
├── tweet-service
├── src
│ └── main
│ │ ├── resources
│ │ └── bootstrap.yml
│ │ └── java
│ │ └── com
│ │ └── gmail
│ │ └── merikbest2015
│ │ ├── repository
│ │ ├── projection
│ │ │ ├── VotedUserProjection.java
│ │ │ ├── TweetImageProjection.java
│ │ │ ├── TaggedUserProjection.java
│ │ │ ├── ProfileTweetImageProjection.java
│ │ │ ├── BookmarkProjection.java
│ │ │ ├── RetweetProjection.java
│ │ │ └── LikeTweetProjection.java
│ │ ├── PollChoiceRepository.java
│ │ └── TweetImageRepository.java
│ │ ├── dto
│ │ ├── response
│ │ │ ├── TweetImageResponse.java
│ │ │ ├── ProfileTweetImageResponse.java
│ │ │ ├── TweetUserResponse.java
│ │ │ └── NotificationReplyResponse.java
│ │ └── request
│ │ │ ├── TweetDeleteRequest.java
│ │ │ └── VoteRequest.java
│ │ ├── constants
│ │ └── TweetSuccessMessage.java
│ │ ├── service
│ │ └── BookmarkService.java
│ │ └── TweetServiceApplication.java
└── Dockerfile
├── config-server
└── Dockerfile
├── eureka-server
├── Dockerfile
└── src
│ └── main
│ ├── resources
│ └── application.yml
│ └── java
│ └── com
│ └── gmail
│ └── merikbest2015
│ └── EurekaServerApplication.java
├── scheduler-service
├── src
│ └── main
│ │ ├── resources
│ │ └── bootstrap.yml
│ │ └── java
│ │ └── com
│ │ └── gmail
│ │ └── merikbest2015
│ │ ├── constants
│ │ └── SchedulerSuccessMessage.java
│ │ ├── dto
│ │ └── response
│ │ │ ├── TriggerResponse.java
│ │ │ └── JobDetailResponse.java
│ │ └── SchedulerServiceApplication.java
└── Dockerfile
├── websocket-service
├── src
│ └── main
│ │ └── resources
│ │ └── bootstrap.yml
└── Dockerfile
├── localization-service
├── src
│ └── main
│ │ ├── resources
│ │ ├── bootstrap.yml
│ │ └── db
│ │ │ └── migration
│ │ │ ├── V3__Create_wallpapers_table.sql
│ │ │ ├── V2__Create_languages_table.sql
│ │ │ ├── V4__Create_gif_images_table.sql
│ │ │ └── V1__Create_country_codes_table.sql
│ │ └── java
│ │ └── com
│ │ └── gmail
│ │ └── merikbest2015
│ │ ├── model
│ │ └── LanguageCode.java
│ │ ├── constants
│ │ └── LocalizationSuccessMessage.java
│ │ ├── dto
│ │ └── response
│ │ │ ├── WallpaperResponse.java
│ │ │ ├── LanguagesResponse.java
│ │ │ ├── GifImageResponse.java
│ │ │ ├── CountryCodeResponse.java
│ │ │ ├── TranslationResponse.java
│ │ │ └── TranslationValueResponse.java
│ │ ├── service
│ │ ├── GifImageService.java
│ │ ├── LanguageService.java
│ │ ├── WallpaperService.java
│ │ └── CountryCodeService.java
│ │ ├── repository
│ │ ├── GifImageRepository.java
│ │ └── LanguageRepository.java
│ │ └── LocalizationServiceApplication.java
└── Dockerfile
└── .gitignore
/frontend/.env:
--------------------------------------------------------------------------------
1 | SKIP_PREFLIGHT_CHECK=true
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Home/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Home";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Lists";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Login/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Login";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Connect/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Connect";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Explore/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Explore";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./FullList";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Messages/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Messages";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Settings";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Topics/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Topics";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Trends/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Trends";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UserPage";
2 |
--------------------------------------------------------------------------------
/frontend/src/react-app-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Bookmarks/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Bookmarks";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./FullTweet";
2 |
--------------------------------------------------------------------------------
/frontend/src/components/TweetInput/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TweetInput";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Explore/UsersList/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UsersList";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/TweetGif/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TweetGif";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/ListsItem/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ListsItem";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/UserLists/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UserLists";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Notifications/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Notifications";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/QuoteTweets/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./QuoteTweets";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Account";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Topics/Followed/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Followed";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Topics/Suggested/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Suggested";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Topics/TopicItem/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TopicItem";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserInfo/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UserInfo";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Authentication/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Authentication";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Explore/TweetsList/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TweetsList";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/ForgotPassword/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ForgotPassword";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/TweetImage/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TweetImage";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/TweetList/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TweetList";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/TweetMedia/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TweetMedia";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/TweetPoll/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TweetPoll";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/TweetQuote/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TweetQuote";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/ListsHeader/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ListsHeader";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/PinnedLists/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./PinnedLists";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Messages/ActionIcon/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ActionIcon";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Topics/TopicBlock/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TopicBlock";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Trends/TrendsItem/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TrendsItem";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserAvatar/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UserAvatar";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserDetails/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UserDetails";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserTweets/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UserTweets";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FollowersYouKnow/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./FollowersYouKnow";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FollowingFollowers/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./FollowingFollowers";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/ForgotPassword/FindEmail/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./FindEmail";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/TweetActions/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TweetActions";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/TweetDateTime/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TweetDateTime";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/TweetHeader/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TweetHeader";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Home/TopTweetActions/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TopTweetActions";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/DiscoverLists/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./DiscoverLists";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Messages/ChatMessages/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ChatMessages";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Notifications/MentionsTab/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./MentionsTab";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Notifications/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Notifications";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/SettingsItem/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./SettingsItem";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Topics/NotInterested/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./NotInterested";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Topics/TopicsCarousel/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TopicsCarousel";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserNotFound/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UserNotFound";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserWallpaper/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UserWallpaper";
2 |
--------------------------------------------------------------------------------
/dashboard/grafana/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM grafana/grafana
2 | ADD ./provisioning /etc/grafana/provisioning
3 |
--------------------------------------------------------------------------------
/frontend/src/pages/Authentication/DialogWrapper/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./DialogWrapper";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Bookmarks/BookmarksHeader/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./BookmarksHeader";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/ForgotPassword/ResetPassword/index.ts:
--------------------------------------------------------------------------------
1 | export {default } from "./ResetPassword";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/EditListButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./EditListButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/FullListHeader/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./FullListHeader";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/FullListTweets/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./FullListTweets";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/AddReplyToTweet/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./AddReplyToTweet";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/LikeIconButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./LikeIconButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/ReplyIconButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ReplyIconButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/TweetErrorPage/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TweetErrorPage";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/TweetReplyInfo/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TweetReplyInfo";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/ListsMemberships/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ListsMemberships";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/PopperListWindow/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./PopperListWindow";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Notifications/Filters/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Filters";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/Spaces/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Spaces";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./PrivacyAndSafety";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/SettingsHeader/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./SettingsHeader";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Topics/TopicBlock/TopicButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TopicButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/BlockUserButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./BlockUserButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/CancelUserButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./CancelUserButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/FollowUserButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./FollowUserButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserImageModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UserImageModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserPageActions/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UserPageActions";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserPageHeader/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UserPageHeader";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Authentication/CustomizeModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./CustomizeModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/ForgotPassword/CheckEmailCode/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./CheckEmailCode";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/FullListWallpaper/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./FullListWallpaper";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/ShareActionsModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ShareActionsModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/RetweetIconButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./RetweetIconButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/ListsItem/ListsItemAvatar/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ListsItemAvatar";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Messages/ChatMessages/ChatFooter/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ChatFooter";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Messages/ChatMessages/ChatHeader/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ChatHeader";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Messages/ChatMessages/ChatMessage/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ChatMessage";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Notifications/NotificationsTab/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./NotificationsTab";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/TweetDeckTeams/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TweetDeckTeams";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Notifications/Preferences/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Preferences";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/Location/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Location";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/YourTweets/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./YourTweets";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/EditProfileButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./EditProfileButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/NotificationButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./NotificationButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UnfollowUserButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UnfollowUserButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserBlockedMessage/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UserBlockedMessage";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserFollowerGroup/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UserFollowerGroup";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserTweets/EmptyLikesTab/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./EmptyLikesTab";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserTweets/EmptyMediaTab/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./EmptyMediaTab";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserUnmuteMessage/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UserUnmuteMessage";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Authentication/CreateAccountModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./CreateAccountModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Authentication/RegistrationInput/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./RegistrationInput";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Authentication/RegistrationModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./RegistrationModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Authentication/SetPasswordModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./SetPasswordModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/ForgotPassword/ForgotPasswordTextField/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./ForgotPasswordTextField";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/EditListButton/EditListModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./EditListModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/FullListDescription/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./FullListDescription";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/MembersAndFollowers/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./MembersAndFollowers";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/TopTweetsActionsModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TopTweetsActionsModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/ListsHeader/CreateListsModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./CreateListsModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/PinnedLists/PinnedListsItem/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./PinnedListsItem";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Notifications/EmptyNotifications/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./EmptyNotifications";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/DeactivateAccount/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./DeactivateAccount";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/AdditionalResources/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./AdditionalResources";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/DataSharing/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./DataSharing";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/Location/Places/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Places";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/MuteAndBlock/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./MuteAndBlock";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/SecurityAndAccountAccess/Security/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Security";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Topics/TopicItem/FollowTopicButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./FollowTopicButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/AddUserToChatButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./AddUserToChatButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserInteractionCount/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UserInteractionCount";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserTweets/EmptyRepliesTab/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./EmptyRepliesTab";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserTweets/EmptyTweetsTab/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./EmptyTweetsTab";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/ForgotPassword/ResetPasswordOption/index.ts:
--------------------------------------------------------------------------------
1 | export {default } from "./ResetPasswordOption";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/ForgotPassword/ResetPasswordSuccess/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ResetPasswordSuccess";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/TweetInteractionCount/LikesCount/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./LikesCount";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/TweetInteractionCount/QuotesCount/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./QuotesCount";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/TweetInteractionCount/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TweetInteractionCount";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/ListsItem/ListInfoDescription/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ListInfoDescription";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/PopperListWindow/FollowListButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./FollowListButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Messages/ChatMessages/ChatUserBlocked/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ChatUserBlocked";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Messages/ChatMessages/EmptyChatMessages/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./EmptyChatMesseges";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/AccountInformation/ChangeAge/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ChangeAge";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/AccountInformation/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./AccountInformation";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/ChangeYourPassword/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ChangeYourPassword";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/AdsPreferences/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./AdsPreferences";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/ContentYouSee/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ContentYouSee";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/DirectMessages/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./DirectMessages";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/Discoverability/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Discoverability";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Topics/TopicBlock/FollowedTopicButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./FollowedTopicButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Topics/TopicItem/UnfollowTopicButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UnfollowTopicButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserPageActions/BlockUserButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./BlockUserButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserPageActions/MuteUserButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./MuteUserButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserPageActions/UserItemAction/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UserItemAction";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Authentication/EmailVerificationModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./EmailVerificationModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/ShareActionsModal/ShareActionsItem/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ShareActionsItem";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/ShareActionsModal/TweetListAction/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TweetListAction";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/TopTweetsActionsModal/TopTweetsItem/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TopTweetsItem";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/TweetInteractionCount/RetweetsCount/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./RetweetsCount";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/PopperListWindow/PopperListWallpaper/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./PopperListWallpaper";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/PopperListWindow/UnfollowListButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UnfollowListButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/AccessibilityDisplayLanguages/DataUsage/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./DataUsage";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/AccessibilityDisplayLanguages/Languages/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Languages";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/AccountInformation/ChangeEmail/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ChangeEmail";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/AccountInformation/ChangeGender/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ChangeGender";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/AccountInformation/ChangePhone/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ChangePhone";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Notifications/ContentPreferences/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ContentPreferences";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/MuteAndBlock/MutedWords/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./MutedWords";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/SecurityAndAccountAccess/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./SecurityAndAccountAccess";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/EditProfileButton/EditProfileModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./EditProfileModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/EditProfileButton/SetupProfileModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./SetupProfileModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserPrivateProfileMessage/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UserPrivateProfileMessage";
2 |
--------------------------------------------------------------------------------
/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/merikbest/twitter-spring-reactjs/HEAD/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/frontend/public/twitter.2.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/merikbest/twitter-spring-reactjs/HEAD/frontend/public/twitter.2.ico
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/MembersAndFollowers/FullListUserCount/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./FullListUserCount";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/ShareActionsModal/CopyListLinkAction/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./CopyListLinkAction";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/PopperListWindow/PopperListDescription/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./PopperListDescription";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Notifications/NotificationsTab/NotificationInfo/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./NotificationInfo";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Notifications/NotificationsTab/NotificationItem/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./NotificationItem";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/AccessibilityDisplayLanguages/Accessibility/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Accessibility";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/AccessibilityDisplayLanguages/DataUsage/Autoplay/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Autoplay";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/AccountInformation/ChangeCountry/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ChangeCountry";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/AccountInformation/ChangeLanguage/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ChangeLanguage";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/AccountInformation/ChangeUsername/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ChangeUsername";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Notifications/ContentPreferences/ExploreModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ExploreModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/AudienceAndTagging/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./AudienceAndTagging";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/MuteAndBlock/MutedAccounts/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./MutedAccounts";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/OffTwitterActivity/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./OffTwitterActivity";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/SecurityAndAccountAccess/AppsAndSessions/Sessions/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Sessions";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/SecurityAndAccountAccess/AppsAndSessions/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./AppsAndSessions";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserInteractionCount/UserFollowersCount/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UserFollowersCount";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserInteractionCount/UserFollowingCount/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UserFollowingCount";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserPageActions/AddUserToListsButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./AddUserToListsButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserPageActions/ViewUserListsButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ViewUserListsButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserPageActions/ViewUserTopicsButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ViewUserTopicsButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FollowingFollowers/EmptyFollowersDescription/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./EmptyFollowersDescription";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FollowingFollowers/FollowingFollowersHeader/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./FollowingFollowersHeader";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/EditListButton/EditListModal/DeleteListModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./DeleteListModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/ShareActionsModal/TweetListAction/TweetListModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TweetListModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/AccessibilityDisplayLanguages/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./AccessibilityDisplayLanguages";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Notifications/PersonalizationAndData/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./PersonalizationAndData";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Notifications/Preferences/EmailNotifications/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./EmailNotifications";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Notifications/Preferences/PushNotifications/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./PushNotifications";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/AudienceAndTagging/PhotoTagging/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./PhotoTagging";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/Discoverability/ManageContacts/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ManageContacts";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/MuteAndBlock/BlockedAccounts/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./BlockedAccounts";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/EditProfileButton/EditProfileModal/EditBirthDate/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./EditBirthDate";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/EditProfileButton/SetupProfileModal/ProfileModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ProfileModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserPageActions/CopyProfileLinkButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./CopyProfileLinkButton";
2 |
--------------------------------------------------------------------------------
/commons/src/main/resources/sql-test/clear-tag-db.sql:
--------------------------------------------------------------------------------
1 | delete from "tag-test".public.tweet_tags;
2 | delete from "tag-test".public.tags;
3 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/EditListButton/EditListModal/ManageMembersModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ManageMembersModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/FullListTweets/MembersAndFollowersModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./MembersAndFollowersModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/PopperListWindow/PopperListInteractionCount/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./PopperListInteractionCount";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Notifications/NotificationsTab/NotificationAuthorItem/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./NotificationAuthorItem";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Notifications/NotificationsTab/NotificationsTimeline/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./NotificationsTimeline";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/MuteAndBlock/MutedNotifications/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./MutedNotifications";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/YourTweets/LocationInformation/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./LocationInformation";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/SecurityAndAccountAccess/AppsAndSessions/ConnectedApps/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ConnectedApps";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/SecurityAndAccountAccess/AppsAndSessions/LoggedDevices/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./LoggedDevices";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/ListsHeader/CreateListsModal/CreateListsModalInput/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./CreateListsModalInput";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/AccountInformation/ChangeEmail/ChangeEmailModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ChangeEmailModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/AdsPreferences/YourAdvertiserList/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./YourAdvertiserList";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/EditProfileButton/SetupProfileModal/ProfileHeaderModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ProfileHeaderModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/types/tag.ts:
--------------------------------------------------------------------------------
1 | export interface TagResponse {
2 | id: number;
3 | tagName: string;
4 | tweetsQuantity: number;
5 | }
6 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/EditListButton/EditListModal/ManageMembersModal/ManageMembersInput/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./ManageMembersInput";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Notifications/ContentPreferences/RecommendationsModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./RecommendationsModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/MuteAndBlock/MutedAccounts/MutedAccountItem/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./MutedAccountItem";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/EditProfileButton/SetupProfileModal/ProfilePictureModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ProfilePictureModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/EditProfileButton/SetupProfileModal/ProfileUpdatedModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ProfileUpdatedModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/EditListButton/EditListModal/ManageMembersModal/ManageMembersItem/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ManageMembersItem";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/PopperListWindow/PopperListInteractionCount/PopperListUserCount/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./PopperListUserCount";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Notifications/ContentPreferences/ExploreModal/ExploreModalInfo/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ExploreModalInfo";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/MuteAndBlock/BlockedAccounts/BlockedAccountItem/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./BlockedAccountItem";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/SecurityAndAccountAccess/AppsAndSessions/AccountAccessHistory/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./AccountAccessHistory";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/SecurityAndAccountAccess/AppsAndSessions/Sessions/CurrentSession/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./CurrentSession";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/SecurityAndAccountAccess/Security/TwoFactorAuthentication/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./TwoFactorAuthentication";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/EditProfileButton/EditProfileModal/EditBirthDate/BirthDateSelect/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./BirthDateSelect";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/EditProfileButton/SetupProfileModal/ProfileDescriptionModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ProfileDescriptionModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Notifications/NotificationsTab/NotificationInfo/NotificationInfoHeader/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./NotificationInfoHeader";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/AccountInformation/ChangePhone/DeletePhoneNumberButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./DeletePhoneNumberButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/AccountInformation/ChangePhone/UpdatePhoneNumberButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./UpdatePhoneNumberButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/EditProfileButton/EditProfileModal/EditBirthDate/EditBirthDateModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./EditBirthDateModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Notifications/ContentPreferences/RecommendationsModal/RecommendedLanguage/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./RecommendedLanguage";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/MuteAndBlock/MutedAccounts/MutedAccountItem/MuteAccountInfo/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./MuteAccountInfo";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/EditListButton/EditListModal/ManageMembersModal/ManageMembersItem/MemberItemInfo/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./MemberItemInfo";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/AccessibilityDisplayLanguages/Display/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./Display";
2 | export type { DisplayProps } from "./Display";
3 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/AccountInformation/ChangePhone/DeletePhoneNumberButton/DeletePhoneModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./DeletePhoneModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/AccountInformation/ChangePhone/UpdatePhoneNumberButton/ChangePhoneModal/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ChangePhoneModal";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/MuteAndBlock/MutedAccounts/MutedAccountItem/MuteAccountAvatar/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./MuteAccountAvatar";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/MuteAndBlock/MutedAccounts/MutedAccountItem/MuteAccountButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./MuteAccountButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/EditListButton/EditListModal/ManageMembersModal/ManageMembersItem/ManageMemberButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ManageMemberButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/EditListButton/EditListModal/ManageMembersModal/ManageMembersItem/MemberItemAvatar/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./MemberItemAvatar";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/MuteAndBlock/BlockedAccounts/BlockedAccountItem/BlockAccountButton/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./BlockAccountButton";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/MuteAndBlock/BlockedAccounts/BlockedAccountItem/BlockedAccountInfo/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./BlockedAccountInfo";
2 |
--------------------------------------------------------------------------------
/frontend/src/store/ducks/actionSnackbar/contracts/state.ts:
--------------------------------------------------------------------------------
1 | export interface ActionSnackbarState {
2 | snackBarMessage: string;
3 | openSnackBar: boolean;
4 | }
5 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/model/UserRole.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.model;
2 |
3 | public enum UserRole {
4 | USER, ADMIN
5 | }
6 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/MuteAndBlock/BlockedAccounts/BlockedAccountItem/BlockedAccountAvatar/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./BlockedAccountAvatar";
2 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/EditProfileButton/SetupProfileModal/ProfileDescriptionModal/ProfileDescriptionInput/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from "./ProfileDescriptionInput";
2 |
--------------------------------------------------------------------------------
/lombok.config:
--------------------------------------------------------------------------------
1 | lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Qualifier
2 | lombok.copyableAnnotations += org.springframework.context.annotation.Lazy
3 |
--------------------------------------------------------------------------------
/frontend/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | ['@babel/preset-env', {targets: {node: 'current'}}],
4 | '@babel/preset-typescript',
5 | ],
6 | };
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/enums/ReplyType.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.enums;
2 |
3 | public enum ReplyType {
4 | EVERYONE, FOLLOW, MENTION
5 | }
6 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/enums/TweetType.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.enums;
2 |
3 | public enum TweetType {
4 | TWEET, RETWEET, REPLY
5 | }
6 |
--------------------------------------------------------------------------------
/frontend/src/types.d.ts:
--------------------------------------------------------------------------------
1 | import { compose } from "redux";
2 |
3 | declare global {
4 | interface Window {
5 | __REDUX_DEVTOOLS_EXTENSION_COMPOSE__?: typeof compose;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/enums/LinkCoverSize.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.enums;
2 |
3 | public enum LinkCoverSize {
4 | SMALL, MEDIUM, LARGE
5 | }
6 |
--------------------------------------------------------------------------------
/notification-service/src/main/resources/db/migration/V3__Create_lists_table.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE lists
2 | (
3 | id INT8 NOT NULL,
4 | list_name VARCHAR(255) NOT NULL
5 | );
6 |
--------------------------------------------------------------------------------
/tag-service/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: tag-service
4 | cloud:
5 | config:
6 | uri: http://${CONFIG_SERVER_HOST:localhost}:8888/
7 |
--------------------------------------------------------------------------------
/api-gateway/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM openjdk:17
2 | MAINTAINER Miroslav Khotinskiy
3 | COPY target/api-gateway-0.0.1-SNAPSHOT.jar ./
4 | CMD ["java", "-jar", "api-gateway-0.0.1-SNAPSHOT.jar"]
5 |
--------------------------------------------------------------------------------
/chat-service/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: chat-service
4 | cloud:
5 | config:
6 | uri: http://${CONFIG_SERVER_HOST:localhost}:8888/
7 |
--------------------------------------------------------------------------------
/email-service/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: email-service
4 | cloud:
5 | config:
6 | uri: http://${CONFIG_SERVER_HOST:localhost}:8888/
7 |
--------------------------------------------------------------------------------
/image-service/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: image-service
4 | cloud:
5 | config:
6 | uri: http://${CONFIG_SERVER_HOST:localhost}:8888/
7 |
--------------------------------------------------------------------------------
/lists-service/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: lists-service
4 | cloud:
5 | config:
6 | uri: http://${CONFIG_SERVER_HOST:localhost}:8888/
7 |
--------------------------------------------------------------------------------
/tag-service/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM openjdk:17
2 | MAINTAINER Miroslav Khotinskiy
3 | COPY target/tag-service-0.0.1-SNAPSHOT.jar ./
4 | CMD ["java", "-jar", "tag-service-0.0.1-SNAPSHOT.jar"]
5 |
--------------------------------------------------------------------------------
/topic-service/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: topic-service
4 | cloud:
5 | config:
6 | uri: http://${CONFIG_SERVER_HOST:localhost}:8888/
7 |
--------------------------------------------------------------------------------
/tweet-service/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: tweet-service
4 | cloud:
5 | config:
6 | uri: http://${CONFIG_SERVER_HOST:localhost}:8888/
7 |
--------------------------------------------------------------------------------
/user-service/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: user-service
4 | cloud:
5 | config:
6 | uri: http://${CONFIG_SERVER_HOST:localhost}:8888/
7 |
--------------------------------------------------------------------------------
/chat-service/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM openjdk:17
2 | MAINTAINER Miroslav Khotinskiy
3 | COPY target/chat-service-0.0.1-SNAPSHOT.jar ./
4 | CMD ["java", "-jar", "chat-service-0.0.1-SNAPSHOT.jar"]
5 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/enums/BackgroundColorType.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.enums;
2 |
3 | public enum BackgroundColorType {
4 | DEFAULT, DIM, LIGHTS_OUT
5 | }
6 |
--------------------------------------------------------------------------------
/config-server/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM openjdk:17
2 | MAINTAINER Miroslav Khotinskiy
3 | COPY target/config-server-0.0.1-SNAPSHOT.jar ./
4 | CMD ["java", "-jar", "config-server-0.0.1-SNAPSHOT.jar"]
5 |
--------------------------------------------------------------------------------
/email-service/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM openjdk:17
2 | MAINTAINER Miroslav Khotinskiy
3 | COPY target/email-service-0.0.1-SNAPSHOT.jar ./
4 | CMD ["java", "-jar", "email-service-0.0.1-SNAPSHOT.jar"]
5 |
--------------------------------------------------------------------------------
/eureka-server/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM openjdk:17
2 | MAINTAINER Miroslav Khotinskiy
3 | COPY target/eureka-server-0.0.1-SNAPSHOT.jar ./
4 | CMD ["java", "-jar", "eureka-server-0.0.1-SNAPSHOT.jar"]
5 |
--------------------------------------------------------------------------------
/image-service/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM openjdk:17
2 | MAINTAINER Miroslav Khotinskiy
3 | COPY target/image-service-0.0.1-SNAPSHOT.jar ./
4 | CMD ["java", "-jar", "image-service-0.0.1-SNAPSHOT.jar"]
5 |
--------------------------------------------------------------------------------
/lists-service/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM openjdk:17
2 | MAINTAINER Miroslav Khotinskiy
3 | COPY target/lists-service-0.0.1-SNAPSHOT.jar ./
4 | CMD ["java", "-jar", "lists-service-0.0.1-SNAPSHOT.jar"]
5 |
--------------------------------------------------------------------------------
/topic-service/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM openjdk:17
2 | MAINTAINER Miroslav Khotinskiy
3 | COPY target/topic-service-0.0.1-SNAPSHOT.jar ./
4 | CMD ["java", "-jar", "topic-service-0.0.1-SNAPSHOT.jar"]
5 |
--------------------------------------------------------------------------------
/tweet-service/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM openjdk:17
2 | MAINTAINER Miroslav Khotinskiy
3 | COPY target/tweet-service-0.0.1-SNAPSHOT.jar ./
4 | CMD ["java", "-jar", "tweet-service-0.0.1-SNAPSHOT.jar"]
5 |
--------------------------------------------------------------------------------
/user-service/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM openjdk:17
2 | MAINTAINER Miroslav Khotinskiy
3 | COPY target/user-service-0.0.1-SNAPSHOT.jar ./
4 | CMD ["java", "-jar", "user-service-0.0.1-SNAPSHOT.jar"]
5 |
--------------------------------------------------------------------------------
/commons/src/main/resources/sql-test/clear-notification-db.sql:
--------------------------------------------------------------------------------
1 | delete from "notification-test".public.notifications;
2 | delete from "notification-test".public.tweets;
3 | delete from "notification-test".public.users;
4 |
--------------------------------------------------------------------------------
/scheduler-service/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: scheduler-service
4 | cloud:
5 | config:
6 | uri: http://${CONFIG_SERVER_HOST:localhost}:8888/
7 |
--------------------------------------------------------------------------------
/websocket-service/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: websocket-service
4 | cloud:
5 | config:
6 | uri: http://${CONFIG_SERVER_HOST:localhost}:8888/
7 |
--------------------------------------------------------------------------------
/commons/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | jwt:
2 | header: Authorization
3 | secret: ANMGN10M0EI76QJPOOCAKRD1RJ98C6AACBIM8YYCJKMH43VTD52IRJE8N0DEOB70
4 | expiration: 6048000
5 | hostname: http://localhost:3000
6 |
--------------------------------------------------------------------------------
/localization-service/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: localization-service
4 | cloud:
5 | config:
6 | uri: http://${CONFIG_SERVER_HOST:localhost}:8888/
7 |
--------------------------------------------------------------------------------
/notification-service/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: notification-service
4 | cloud:
5 | config:
6 | uri: http://${CONFIG_SERVER_HOST:localhost}:8888/
7 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/constants/Regexp.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.constants;
2 |
3 | public class Regexp {
4 | public static final String USER_EMAIL_REGEXP = ".+@.+\\..+";
5 | }
6 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/enums/ColorSchemeType.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.enums;
2 |
3 | public enum ColorSchemeType {
4 | BLUE, YELLOW, CRIMSON, VIOLET, ORANGE, GREEN
5 | }
6 |
--------------------------------------------------------------------------------
/commons/src/main/resources/sql-test/clear-scheduler-db.sql:
--------------------------------------------------------------------------------
1 | delete from "scheduler-test".public.qrtz_cron_triggers;
2 | delete from "scheduler-test".public.qrtz_triggers;
3 | delete from "scheduler-test".public.qrtz_job_details;
4 |
--------------------------------------------------------------------------------
/scheduler-service/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM openjdk:17
2 | MAINTAINER Miroslav Khotinskiy
3 | COPY target/scheduler-service-0.0.1-SNAPSHOT.jar ./
4 | CMD ["java", "-jar", "scheduler-service-0.0.1-SNAPSHOT.jar"]
5 |
--------------------------------------------------------------------------------
/tweet-service/src/main/java/com/gmail/merikbest2015/repository/projection/VotedUserProjection.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository.projection;
2 |
3 | public interface VotedUserProjection {
4 | Long getId();
5 | }
6 |
--------------------------------------------------------------------------------
/websocket-service/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM openjdk:17
2 | MAINTAINER Miroslav Khotinskiy
3 | COPY target/websocket-service-0.0.1-SNAPSHOT.jar ./
4 | CMD ["java", "-jar", "websocket-service-0.0.1-SNAPSHOT.jar"]
5 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/enums/NotificationType.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.enums;
2 |
3 | public enum NotificationType {
4 | TWEET, RETWEET, REPLY, LIKE, FOLLOW, LISTS, MENTION
5 | }
6 |
--------------------------------------------------------------------------------
/localization-service/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM openjdk:17
2 | MAINTAINER Miroslav Khotinskiy
3 | COPY target/localization-service-0.0.1-SNAPSHOT.jar ./
4 | CMD ["java", "-jar", "localization-service-0.0.1-SNAPSHOT.jar"]
5 |
--------------------------------------------------------------------------------
/localization-service/src/main/java/com/gmail/merikbest2015/model/LanguageCode.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.model;
2 |
3 | public enum LanguageCode {
4 | EN, ES, DE, FR, IT;
5 |
6 | public static final int SIZE = 5;
7 | }
8 |
--------------------------------------------------------------------------------
/notification-service/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM openjdk:17
2 | MAINTAINER Miroslav Khotinskiy
3 | COPY target/notification-service-0.0.1-SNAPSHOT.jar ./
4 | CMD ["java", "-jar", "notification-service-0.0.1-SNAPSHOT.jar"]
5 |
--------------------------------------------------------------------------------
/tag-service/src/main/java/com/gmail/merikbest2015/constants/TagErrorMessage.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.constants;
2 |
3 | public class TagErrorMessage {
4 | public static final String TAG_NOT_FOUND = "Tag not found";
5 | }
6 |
--------------------------------------------------------------------------------
/notification-service/src/main/resources/db/migration/V1__Create_users_table.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE users
2 | (
3 | id INT8 NOT NULL,
4 | username VARCHAR(255) NOT NULL,
5 | avatar VARCHAR(255),
6 | PRIMARY KEY (id)
7 | );
8 |
--------------------------------------------------------------------------------
/topic-service/src/main/java/com/gmail/merikbest2015/constants/TopicErrorMessage.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.constants;
2 |
3 | public class TopicErrorMessage {
4 | public static final String TOPIC_NOT_FOUND = "Topic not found";
5 | }
6 |
--------------------------------------------------------------------------------
/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
3 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/constants/BatchJobConstants.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.constants;
2 |
3 | public class BatchJobConstants {
4 | public static final String IMPORT_USER_JOB = "importUserJob";
5 | }
6 |
--------------------------------------------------------------------------------
/frontend/src/components/ActionIconButton/ActionIconButtonStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useActionIconButtonStyles = makeStyles(() => ({
4 | icon: {
5 | display: "inline-block"
6 | }
7 | }));
8 |
--------------------------------------------------------------------------------
/scheduler-service/src/main/java/com/gmail/merikbest2015/constants/SchedulerSuccessMessage.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.constants;
2 |
3 | public class SchedulerSuccessMessage {
4 | public static final String JOB_DELETED = "Job deleted";
5 | }
6 |
--------------------------------------------------------------------------------
/tag-service/src/main/java/com/gmail/merikbest2015/service/TagClientService.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.service;
2 |
3 | import java.util.List;
4 |
5 | public interface TagClientService {
6 |
7 | List getTagsByText(String text);
8 | }
9 |
--------------------------------------------------------------------------------
/tweet-service/src/main/java/com/gmail/merikbest2015/repository/projection/TweetImageProjection.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository.projection;
2 |
3 | public interface TweetImageProjection {
4 | Long getId();
5 | String getSrc();
6 | }
7 |
--------------------------------------------------------------------------------
/api-gateway/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | main:
3 | web-application-type: reactive
4 | application:
5 | name: api-gateway
6 | cloud:
7 | config:
8 | uri: http://${CONFIG_SERVER_HOST:localhost}:8888/
9 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/PrivacyAndSafetyStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const usePrivacyAndSafetyStyles = makeStyles(() => ({
4 | listWrapper: {
5 | paddingBottom: 64
6 | }
7 | }));
8 |
--------------------------------------------------------------------------------
/tweet-service/src/main/java/com/gmail/merikbest2015/repository/projection/TaggedUserProjection.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository.projection;
2 |
3 | public interface TaggedUserProjection {
4 | Long getId();
5 | String getFullName();
6 | }
7 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/ChangeYourPassword/ChangeYourPasswordStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useChangeYourPasswordStyles = makeStyles(() => ({
4 | buttonWrapper: {
5 | float: "right"
6 | }
7 | }));
8 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/AdditionalResources/AdditionalResourcesStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useAdditionalResourcesStyles = makeStyles(() => ({
4 | listWrapper: {
5 | paddingBottom: 64
6 | }
7 | }));
8 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/Spaces/SpacesStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useSpacesStyles = makeStyles(() => ({
4 | title: {
5 | paddingBottom: 4,
6 | fontWeight: 700
7 | }
8 | }));
9 |
--------------------------------------------------------------------------------
/commons/src/main/resources/sql-test/clear-localization-db.sql:
--------------------------------------------------------------------------------
1 | delete from "localization-test".public.country_codes;
2 | delete from "localization-test".public.languages;
3 | delete from "localization-test".public.wallpapers;
4 | delete from "localization-test".public.gif_images;
5 |
--------------------------------------------------------------------------------
/frontend/src/store/ducks/chat/contracts/state.ts:
--------------------------------------------------------------------------------
1 | import { ChatResponse } from "../../../../types/chat";
2 | import { LoadingStatus } from "../../../../types/common";
3 |
4 | export interface ChatState {
5 | item?: ChatResponse;
6 | loadingState: LoadingStatus;
7 | }
8 |
--------------------------------------------------------------------------------
/localization-service/src/main/resources/db/migration/V3__Create_wallpapers_table.sql:
--------------------------------------------------------------------------------
1 | CREATE SEQUENCE wallpapers_seq START 1000 INCREMENT 1;
2 |
3 | CREATE TABLE wallpapers
4 | (
5 | id INT8 NOT NULL,
6 | src VARCHAR(255) NOT NULL,
7 | PRIMARY KEY (id)
8 | );
9 |
--------------------------------------------------------------------------------
/notification-service/src/main/java/com/gmail/merikbest2015/constants/NotificationErrorMessage.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.constants;
2 |
3 | public class NotificationErrorMessage {
4 | public static final String NOTIFICATION_NOT_FOUND = "Notification not found";
5 | }
6 |
--------------------------------------------------------------------------------
/tag-service/src/main/java/com/gmail/merikbest2015/service/TagHandlerService.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.service;
2 |
3 | public interface TagHandlerService {
4 |
5 | void parseHashtag(Long tweetId, String tweetText);
6 |
7 | void deleteTag(Long tweetId);
8 | }
9 |
--------------------------------------------------------------------------------
/email-service/src/main/java/com/gmail/merikbest2015/service/EmailService.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.service;
2 |
3 | import com.gmail.merikbest2015.commons.event.SendEmailEvent;
4 |
5 | public interface EmailService {
6 | void sendEmail(SendEmailEvent emailEvent);
7 | }
8 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/UserLists/UserListsStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useUserListsStyles = makeStyles(() => ({
4 | myLists: {
5 | height: 316,
6 | border: 0,
7 | borderRadius: 0
8 | }
9 | }));
10 |
--------------------------------------------------------------------------------
/localization-service/src/main/java/com/gmail/merikbest2015/constants/LocalizationSuccessMessage.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.constants;
2 |
3 | public class LocalizationSuccessMessage {
4 | public static final String TRANSLATION_KEY_DELETED = "Translation key deleted";
5 | }
6 |
--------------------------------------------------------------------------------
/localization-service/src/main/resources/db/migration/V2__Create_languages_table.sql:
--------------------------------------------------------------------------------
1 | CREATE SEQUENCE languages_seq START 1000 INCREMENT 1;
2 |
3 | CREATE TABLE languages
4 | (
5 | id INT8 NOT NULL,
6 | language VARCHAR(255) NOT NULL,
7 | PRIMARY KEY (id)
8 | );
9 |
--------------------------------------------------------------------------------
/tweet-service/src/main/java/com/gmail/merikbest2015/dto/response/TweetImageResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.response;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class TweetImageResponse {
7 | private Long id;
8 | private String src;
9 | }
10 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/dto/response/LanguagesResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.response;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class LanguagesResponse {
7 | private Long id;
8 | private String language;
9 | }
10 |
--------------------------------------------------------------------------------
/image-service/src/main/java/com/gmail/merikbest2015/service/ImageService.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.service;
2 |
3 | import org.springframework.web.multipart.MultipartFile;
4 |
5 | public interface ImageService {
6 |
7 | String uploadImage(MultipartFile multipartFile);
8 | }
9 |
--------------------------------------------------------------------------------
/localization-service/src/main/java/com/gmail/merikbest2015/dto/response/WallpaperResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.response;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class WallpaperResponse {
7 | private Long id;
8 | private String src;
9 | }
10 |
--------------------------------------------------------------------------------
/tag-service/src/main/java/com/gmail/merikbest2015/dto/TagResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class TagResponse {
7 | private Long id;
8 | private String tagName;
9 | private Long tweetsQuantity;
10 | }
11 |
--------------------------------------------------------------------------------
/localization-service/src/main/java/com/gmail/merikbest2015/dto/response/LanguagesResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.response;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class LanguagesResponse {
7 | private Long id;
8 | private String language;
9 | }
10 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/dto/request/SearchTermsRequest.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.request;
2 |
3 | import lombok.Data;
4 |
5 | import java.util.List;
6 |
7 | @Data
8 | public class SearchTermsRequest {
9 | private List users;
10 | }
11 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/repository/projection/UserPrincipalProjection.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository.projection;
2 |
3 | public interface UserPrincipalProjection {
4 | Long getId();
5 | String getEmail();
6 | String getActivationCode();
7 | }
8 |
--------------------------------------------------------------------------------
/frontend/src/components/CloseButton/CloseButtonStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useCloseButtonStyles = makeStyles(() => ({
4 | close: {
5 | "& .MuiIconButton-root": {
6 | marginRight: 15
7 | }
8 | }
9 | }));
10 |
--------------------------------------------------------------------------------
/frontend/src/pages/Messages/ChatMessages/ChatUserBlocked/ChatUserBlockedStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useChatUserBlockedStyles = makeStyles(() => ({
4 | blockedInfoText: {
5 | textAlign: "center",
6 | height: 30
7 | }
8 | }));
9 |
--------------------------------------------------------------------------------
/tweet-service/src/main/java/com/gmail/merikbest2015/dto/request/TweetDeleteRequest.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.request;
2 |
3 | import lombok.Data;
4 |
5 | import java.util.List;
6 |
7 | @Data
8 | public class TweetDeleteRequest {
9 | private List tweetsIds;
10 | }
11 |
--------------------------------------------------------------------------------
/tweet-service/src/main/java/com/gmail/merikbest2015/repository/projection/ProfileTweetImageProjection.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository.projection;
2 |
3 | public interface ProfileTweetImageProjection {
4 | Long getTweetId();
5 | Long getImageId();
6 | String getSrc();
7 | }
8 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/repository/projection/NotificationUserProjection.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository.projection;
2 |
3 | public interface NotificationUserProjection {
4 | Long getId();
5 | String getUsername();
6 | String getAvatar();
7 | }
8 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/repository/projection/SameFollower.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository.projection;
2 |
3 | public interface SameFollower {
4 | Long getId();
5 | String getFullName();
6 | String getUsername();
7 | String getAvatar();
8 | }
9 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/AccessibilityDisplayLanguages/DataUsage/DataUsageStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useDataUsageStyles = makeStyles(() => ({
4 | accessibilityInfo: {
5 | display: "inline-block",
6 | width: 200
7 | }
8 | }));
9 |
--------------------------------------------------------------------------------
/topic-service/src/main/java/com/gmail/merikbest2015/dto/request/SuggestedTopicsRequest.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.request;
2 |
3 | import lombok.Data;
4 |
5 | import java.util.List;
6 |
7 | @Data
8 | public class SuggestedTopicsRequest {
9 | private List topicsIds;
10 | }
11 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/dto/response/AuthenticationResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.response;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class AuthenticationResponse {
7 | private AuthUserResponse user;
8 | private String token;
9 | }
10 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/dto/response/user/TaggedUserResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.dto.response.user;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class TaggedUserResponse {
7 | private Long id;
8 | private String fullName;
9 | }
10 |
--------------------------------------------------------------------------------
/topic-service/src/main/java/com/gmail/merikbest2015/service/UserService.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.service;
2 |
3 | import com.gmail.merikbest2015.model.User;
4 |
5 | public interface UserService {
6 |
7 | User getAuthUser();
8 |
9 | void validateUserProfile(Long userId);
10 | }
11 |
--------------------------------------------------------------------------------
/tweet-service/src/main/java/com/gmail/merikbest2015/dto/request/VoteRequest.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.request;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class VoteRequest {
7 | private Long tweetId;
8 | private Long pollId;
9 | private Long pollChoiceId;
10 | }
11 |
--------------------------------------------------------------------------------
/localization-service/src/main/java/com/gmail/merikbest2015/dto/response/GifImageResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.response;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class GifImageResponse {
7 | private Long id;
8 | private String title;
9 | private String src;
10 | }
11 |
--------------------------------------------------------------------------------
/localization-service/src/main/java/com/gmail/merikbest2015/service/GifImageService.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.service;
2 |
3 | import com.gmail.merikbest2015.model.GifImage;
4 |
5 | import java.util.List;
6 |
7 | public interface GifImageService {
8 | List getGifImages();
9 | }
10 |
--------------------------------------------------------------------------------
/localization-service/src/main/java/com/gmail/merikbest2015/service/LanguageService.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.service;
2 |
3 | import com.gmail.merikbest2015.model.Language;
4 |
5 | import java.util.List;
6 |
7 | public interface LanguageService {
8 | List getLanguages();
9 | }
10 |
--------------------------------------------------------------------------------
/frontend/src/components/SideSearch/RemoveSearchResultButton/RemoveSearchResultButtonStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useRemoveSearchResultButtonStyles = makeStyles(() => ({
4 | closeIconButton: {
5 | marginLeft: "auto",
6 | float: "right"
7 | }
8 | }));
9 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/TweetDeckTeams/TweetDeckTeamsStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useTweetDeckTeamsStyles = makeStyles(() => ({
4 | title: {
5 | paddingBottom: 4
6 | },
7 | switch: {
8 | float: "right"
9 | }
10 | }));
11 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Notifications/ContentPreferences/RecommendationsModal/RecommendedLanguage/RecommendedLanguageStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useRecommendedLanguageStyles = makeStyles(() => ({
4 | checkboxWrapper: {
5 | marginTop: 12
6 | }
7 | }));
8 |
--------------------------------------------------------------------------------
/frontend/src/store/ducks/unsentTweets/contracts/state.ts:
--------------------------------------------------------------------------------
1 | import { TweetResponse } from "../../../../types/tweet";
2 | import { LoadingStatus } from "../../../../types/common";
3 |
4 | export interface UnsentTweetsState {
5 | items: TweetResponse[];
6 | pagesCount: number;
7 | loadingState: LoadingStatus;
8 | }
9 |
--------------------------------------------------------------------------------
/lists-service/src/main/java/com/gmail/merikbest2015/service/ListsClientService.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.service;
2 |
3 | import com.gmail.merikbest2015.commons.dto.response.tweet.TweetListResponse;
4 |
5 | public interface ListsClientService {
6 |
7 | TweetListResponse getTweetList(Long listId);
8 | }
9 |
--------------------------------------------------------------------------------
/tweet-service/src/main/java/com/gmail/merikbest2015/repository/projection/BookmarkProjection.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository.projection;
2 |
3 | import java.time.LocalDateTime;
4 |
5 | public interface BookmarkProjection {
6 | LocalDateTime getBookmarkDate();
7 | TweetProjection getTweet();
8 | }
9 |
--------------------------------------------------------------------------------
/tweet-service/src/main/java/com/gmail/merikbest2015/repository/projection/RetweetProjection.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository.projection;
2 |
3 | import java.time.LocalDateTime;
4 |
5 | public interface RetweetProjection {
6 | LocalDateTime getRetweetDate();
7 | TweetUserProjection getTweet();
8 | }
9 |
--------------------------------------------------------------------------------
/tweet-service/src/main/java/com/gmail/merikbest2015/repository/projection/LikeTweetProjection.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository.projection;
2 |
3 | import java.time.LocalDateTime;
4 |
5 | public interface LikeTweetProjection {
6 | LocalDateTime getLikeTweetDate();
7 | TweetProjection getTweet();
8 | }
9 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/constants/HeaderConstants.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.constants;
2 |
3 | public class HeaderConstants {
4 | public static final String AUTH_USER_ID_HEADER = "X-auth-user-id";
5 | public static final String PAGE_TOTAL_COUNT = "page-total-count";
6 | }
7 |
--------------------------------------------------------------------------------
/localization-service/src/main/resources/db/migration/V4__Create_gif_images_table.sql:
--------------------------------------------------------------------------------
1 | CREATE SEQUENCE gif_images_seq START 1000 INCREMENT 1;
2 |
3 | CREATE TABLE gif_images
4 | (
5 | id INT8 NOT NULL,
6 | title VARCHAR(255) NOT NULL,
7 | src VARCHAR(255) NOT NULL,
8 | PRIMARY KEY (id)
9 | );
10 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/dto/response/notification/NotificationListResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.dto.response.notification;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class NotificationListResponse {
7 | private Long id;
8 | private String listName;
9 | }
10 |
--------------------------------------------------------------------------------
/frontend/src/components/AddTweetForm/UnsentTweetsModal/UnsentTweetItem/UnsentTweetsHeader/UnsentTweetsHeaderStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useUnsentTweetsHeaderStyles = makeStyles(() => ({
4 | outlinedButton: {
5 | height: 24,
6 | padding: "0px 12px"
7 | }
8 | }));
9 |
--------------------------------------------------------------------------------
/tweet-service/src/main/java/com/gmail/merikbest2015/dto/response/ProfileTweetImageResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.response;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class ProfileTweetImageResponse {
7 | private Long tweetId;
8 | private Long imageId;
9 | private String src;
10 | }
11 |
--------------------------------------------------------------------------------
/lists-service/src/main/java/com/gmail/merikbest2015/constants/ListsSuccessMessage.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.constants;
2 |
3 | public class ListsSuccessMessage {
4 | public static final String LIST_DELETED = "List id:%s deleted.";
5 | public static final String USER_ADDED_TO_LISTS = "User added to lists success.";
6 | }
7 |
--------------------------------------------------------------------------------
/commons/src/main/resources/sql-test/clear-user-db.sql:
--------------------------------------------------------------------------------
1 | delete from "user-test".public.user_blocked;
2 | delete from "user-test".public.subscribers;
3 | delete from "user-test".public.user_muted;
4 | delete from "user-test".public.user_follower_requests;
5 | delete from "user-test".public.user_subscriptions;
6 | delete from "user-test".public.users;
7 |
--------------------------------------------------------------------------------
/frontend/src/components/Buttons/FullWidthButton/FullWidthButtonStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useFullWidthButtonStyles = makeStyles(() => ({
4 | button: {
5 | position: "absolute",
6 | bottom: 0,
7 | width: 530,
8 | marginBottom: 30
9 | }
10 | }));
11 |
--------------------------------------------------------------------------------
/frontend/src/components/LockIcon/LockIconStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useLockIconStyles = makeStyles(() => ({
4 | lockIcon: {
5 | "& svg": {
6 | marginLeft: 3,
7 | marginBottom: -3,
8 | height: "1.2em"
9 | }
10 | }
11 | }));
12 |
--------------------------------------------------------------------------------
/frontend/src/pages/ForgotPassword/ResetPasswordSuccess/ResetPasswordSuccessStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useResetPasswordSuccessStyles = makeStyles(() => ({
4 | infoWrapper: {
5 | margin: "7px 0px"
6 | },
7 | footer: {
8 | paddingTop: 36
9 | }
10 | }));
11 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/EditListButton/EditListButtonStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useEditListButtonStyles = makeStyles((theme) => ({
4 | listOutlinedButton: {
5 | "&:hover": {
6 | backgroundColor: theme.palette.secondary.light
7 | }
8 | }
9 | }));
10 |
--------------------------------------------------------------------------------
/frontend/src/pages/Messages/MessagesHeader/MessagesHeaderStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useMessagesHeaderStyles = makeStyles(() => ({
4 | header: {
5 | width: 416
6 | },
7 | iconGroup: {
8 | marginLeft: "auto",
9 | marginRight: 10
10 | }
11 | }));
12 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/AudienceAndTagging/PhotoTagging/PhotoTaggingStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const usePhotoTaggingStyles = makeStyles(() => ({
4 | title: {
5 | paddingBottom: 4
6 | },
7 | switch: {
8 | float: "right"
9 | }
10 | }));
11 |
--------------------------------------------------------------------------------
/frontend/src/store/ducks/followerRequests/contracts/state.ts:
--------------------------------------------------------------------------------
1 | import { FollowerUserResponse } from "../../../../types/user";
2 | import { LoadingStatus } from "../../../../types/common";
3 |
4 | export interface FollowerRequestsState {
5 | items: FollowerUserResponse[];
6 | pagesCount: number;
7 | loadingState: LoadingStatus;
8 | }
9 |
--------------------------------------------------------------------------------
/chat-service/src/main/java/com/gmail/merikbest2015/dto/request/ChatMessageRequest.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.request;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 |
6 | @Data
7 | @AllArgsConstructor
8 | public class ChatMessageRequest {
9 | private Long chatId;
10 | private String text;
11 | }
12 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/dto/response/user/UserPrincipalResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.dto.response.user;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class UserPrincipalResponse {
7 | private Long id;
8 | private String email;
9 | private String activationCode;
10 | }
11 |
--------------------------------------------------------------------------------
/commons/src/main/resources/sql-test/clear-topic-db.sql:
--------------------------------------------------------------------------------
1 | delete from "topic-test".public.user_blocked;
2 | delete from "topic-test".public.user_subscriptions;
3 | delete from "topic-test".public.topic_not_interested;
4 | delete from "topic-test".public.topic_followers;
5 | delete from "topic-test".public.users;
6 | delete from "topic-test".public.topics;
7 |
--------------------------------------------------------------------------------
/frontend/src/pages/Authentication/EmailVerificationModal/EmailVerificationModalStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useEmailVerificationModalStyles = makeStyles(() => ({
4 | emailLinkWrapper: {
5 | display: "block",
6 | marginLeft: 10,
7 | marginTop: 2
8 | }
9 | }));
10 |
--------------------------------------------------------------------------------
/frontend/src/pages/Messages/MessagesModal/MessagesModalStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useMessagesModalStyles = makeStyles((theme) => ({
4 | content: {
5 | "& .MuiListItem-root.Mui-selected": {
6 | backgroundColor: theme.palette.secondary.main
7 | }
8 | }
9 | }));
10 |
--------------------------------------------------------------------------------
/tweet-service/src/main/java/com/gmail/merikbest2015/constants/TweetSuccessMessage.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.constants;
2 |
3 | public class TweetSuccessMessage {
4 | public static final String SCHEDULED_TWEETS_DELETED = "Scheduled tweets deleted.";
5 | public static final String YOUR_TWEET_WAS_DELETED = "Your Tweet was deleted";
6 | }
7 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/dto/response/SameFollowerResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.response;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class SameFollowerResponse {
7 | private Long id;
8 | private String fullName;
9 | private String username;
10 | private String avatar;
11 | }
12 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/repository/projection/FollowerUserProjection.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository.projection;
2 |
3 | public interface FollowerUserProjection {
4 | Long getId();
5 | String getFullName();
6 | String getUsername();
7 | String getAbout();
8 | String getAvatar();
9 | }
10 |
--------------------------------------------------------------------------------
/chat-service/src/main/java/com/gmail/merikbest2015/constants/ChatSuccessMessage.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.constants;
2 |
3 | public class ChatSuccessMessage {
4 | public static final String CHAT_SUCCESSFULLY_DELETED = "Chat successfully deleted";
5 | public static final String SUCCESSFULLY_LEFT_THE_CHAT = "Successfully left the chat";
6 | }
7 |
--------------------------------------------------------------------------------
/frontend/src/components/SideMenu/SideMenuMoreItem/FollowerRequestsModal/FollowerRequestsModalSyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useFollowerRequestsModalStyles = makeStyles(() => ({
4 | dialog: {
5 | "& .MuiDialogTitle-root": {
6 | borderBottom: "none"
7 | }
8 | }
9 | }));
10 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/SecurityAndAccountAccess/AppsAndSessions/LoggedDevices/LoggedDevicesStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useLoggedDevicesStyles = makeStyles(() => ({
4 | infoItemWrapper: {
5 | "& .MuiTypography-h6": {
6 | fontWeight: 700
7 | }
8 | }
9 | }));
10 |
--------------------------------------------------------------------------------
/localization-service/src/main/java/com/gmail/merikbest2015/service/WallpaperService.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.service;
2 |
3 | import com.gmail.merikbest2015.model.Wallpaper;
4 |
5 | import java.util.List;
6 |
7 | public interface WallpaperService {
8 | List getWallpapers();
9 |
10 | Wallpaper getWallpaper();
11 | }
12 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/dto/response/UserPhoneResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.response;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 |
6 | @Data
7 | @AllArgsConstructor
8 | public class UserPhoneResponse {
9 | private String phoneCode;
10 | private Long phoneNumber;
11 | }
12 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/repository/projection/CommonUserProjection.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository.projection;
2 |
3 | public interface CommonUserProjection {
4 | Long getId();
5 | String getFullName();
6 | String getUsername();
7 | String getAvatar();
8 | boolean isPrivateProfile();
9 | }
10 |
--------------------------------------------------------------------------------
/frontend/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": false,
3 | "printWidth": 120,
4 | "editor.formatOnSave": true,
5 | "proseWrap": "always",
6 | "tabWidth": 4,
7 | "requireConfig": false,
8 | "useTabs": false,
9 | "trailingComma": "none",
10 | "bracketSpacing": true,
11 | "jsxBracketSameLine": false,
12 | "semi": true
13 | }
--------------------------------------------------------------------------------
/frontend/src/components/Buttons/PendingButton/PendingButtonStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const usePendingButtonStyles = makeStyles((theme) => ({
4 | outlinedButton: {
5 | width: 79,
6 | "&:hover": {
7 | backgroundColor: theme.palette.secondary.light
8 | }
9 | }
10 | }));
11 |
--------------------------------------------------------------------------------
/frontend/src/pages/Notifications/EmptyNotifications/EmptyNotificationsStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useEmptyNotificationsStyles = makeStyles(() => ({
4 | infoWindow: {
5 | textAlign: "center",
6 | "& .MuiTypography-h4": {
7 | marginTop: 30
8 | }
9 | }
10 | }));
11 |
--------------------------------------------------------------------------------
/lists-service/src/main/java/com/gmail/merikbest2015/repository/projection/SimpleListProjection.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository.projection;
2 |
3 | public interface SimpleListProjection {
4 | Long getId();
5 | String getListName();
6 | String getAltWallpaper();
7 | String getWallpaper();
8 | boolean getIsPrivate();
9 | }
10 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/dto/response/UserPintTweetResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.response;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 |
6 | @Data
7 | @AllArgsConstructor
8 | public class UserPintTweetResponse {
9 | private Long userId;
10 | private Long pinnedTweetId;
11 | }
12 |
--------------------------------------------------------------------------------
/frontend/src/components/BackButton/BackButtonStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useBackButtonStyles = makeStyles(() => ({
4 | container: {
5 | display: "inline-block",
6 | "& .MuiIconButton-root": {
7 | marginRight: 20,
8 | marginLeft: 10
9 | }
10 | }
11 | }));
12 |
--------------------------------------------------------------------------------
/frontend/src/components/UsersItem/PendingButton/PendingButtonStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const usePendingButtonStyles = makeStyles((theme) => ({
4 | outlinedButton: {
5 | width: 79,
6 | "&:hover": {
7 | backgroundColor: theme.palette.secondary.light
8 | }
9 | }
10 | }));
11 |
--------------------------------------------------------------------------------
/localization-service/src/main/java/com/gmail/merikbest2015/dto/response/CountryCodeResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.response;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class CountryCodeResponse {
7 | private Long id;
8 | private String countryCode;
9 | private String phoneCode;
10 | private String country;
11 | }
12 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/repository/projection/UserCommonProjection.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository.projection;
2 |
3 | public interface UserCommonProjection {
4 | Long getId();
5 | String getEmail();
6 | String getFullName();
7 | String getActivationCode();
8 | String getPasswordResetCode();
9 | }
10 |
--------------------------------------------------------------------------------
/frontend/src/pages/Messages/MessageSettings/MessageSettingsStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useMessageSettingsStyles = makeStyles(() => ({
4 | chatContainer: {
5 | minWidth: 600,
6 | padding: 0,
7 | borderLeft: 0
8 | },
9 | chatHeader: {
10 | width: 598
11 | }
12 | }));
13 |
--------------------------------------------------------------------------------
/frontend/src/components/AddTweetModal/AddTweetModalStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useAddTweetModalStyles = makeStyles(() => ({
4 | content: {
5 | top: "-20%"
6 | },
7 | dialogContent: {
8 | width: 598,
9 | minHeight: 288,
10 | padding: "10px 20px 10px 20px"
11 | }
12 | }));
13 |
--------------------------------------------------------------------------------
/frontend/src/store/ducks/tweetAdditionalInfo/contracts/state.ts:
--------------------------------------------------------------------------------
1 | import { TweetAdditionalInfoResponse } from "../../../../types/tweet";
2 | import { LoadingStatus } from "../../../../types/common";
3 |
4 | export interface TweetAdditionalInfoState {
5 | tweetAdditionalInfo?: TweetAdditionalInfoResponse;
6 | isTweetBookmarked: boolean;
7 | loadingState: LoadingStatus;
8 | }
9 |
--------------------------------------------------------------------------------
/topic-service/src/main/java/com/gmail/merikbest2015/dto/request/TopicsCategoriesRequest.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.request;
2 |
3 | import com.gmail.merikbest2015.commons.enums.TopicCategory;
4 | import lombok.Data;
5 |
6 | import java.util.List;
7 |
8 | @Data
9 | public class TopicsCategoriesRequest {
10 | private List categories;
11 | }
12 |
--------------------------------------------------------------------------------
/frontend/src/components/TweetComponent/TweetHeader/TweetHeaderStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useTweetHeaderStyles = makeStyles(() => ({
4 | lockIcon: {
5 | "& svg": {
6 | marginLeft: 3,
7 | marginBottom: -3,
8 | width: 16,
9 | height: 16
10 | }
11 | }
12 | }));
13 |
--------------------------------------------------------------------------------
/frontend/src/pages/Authentication/SetPasswordModal/SetPasswordModalStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useSetPasswordModalStyles = makeStyles(() => ({
4 | title: {
5 | marginTop: 20
6 | },
7 | subtitle: {
8 | marginTop: 15
9 | },
10 | controllerWrapper: {
11 | marginTop: 10
12 | }
13 | }));
14 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/AccountInformation/ChangeGender/ChangeGenderStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useChangeGenderStyles = makeStyles(() => ({
4 | textFieldWrapper: {
5 | paddingTop: "24px"
6 | },
7 | buttonWrapper: {
8 | padding: "12px 16px",
9 | float: "right"
10 | }
11 | }));
12 |
--------------------------------------------------------------------------------
/frontend/src/store/ducks/tags/contracts/state.ts:
--------------------------------------------------------------------------------
1 | import { TagResponse } from "../../../../types/tag";
2 | import { LoadingStatus } from "../../../../types/common";
3 |
4 | export interface TagsState {
5 | tags: TagResponse[];
6 | loadingTagsState: LoadingStatus;
7 | trends: TagResponse[];
8 | pagesCount: number;
9 | loadingTrendsState: LoadingStatus;
10 | }
11 |
--------------------------------------------------------------------------------
/localization-service/src/main/java/com/gmail/merikbest2015/service/CountryCodeService.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.service;
2 |
3 | import com.gmail.merikbest2015.model.CountryCode;
4 |
5 | import java.util.List;
6 |
7 | public interface CountryCodeService {
8 | List getCountryCodes();
9 |
10 | boolean isPhoneCodeExists(String phoneCode);
11 | }
12 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/dto/response/FollowerUserResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.response;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class FollowerUserResponse {
7 | private Long id;
8 | private String fullName;
9 | private String username;
10 | private String about;
11 | private String avatar;
12 | }
13 |
--------------------------------------------------------------------------------
/commons/src/main/resources/sql-test/clear-lists-db.sql:
--------------------------------------------------------------------------------
1 | delete from "lists-test".public.user_blocked;
2 | delete from "lists-test".public.user_subscriptions;
3 | delete from "lists-test".public.pinned_lists;
4 | delete from "lists-test".public.lists_followers;
5 | delete from "lists-test".public.lists_members;
6 | delete from "lists-test".public.lists;
7 | delete from "lists-test".public.users;
8 |
--------------------------------------------------------------------------------
/frontend/src/components/Buttons/FollowButton/FollowButtonStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useFollowButtonStyles = makeStyles((theme) => ({
4 | outlinedButton: {
5 | float: "right",
6 | width: 79,
7 | "&:hover": {
8 | backgroundColor: theme.palette.secondary.light
9 | }
10 | }
11 | }));
12 |
--------------------------------------------------------------------------------
/frontend/src/components/Buttons/UnfollowButton/UnfollowButtonStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useUnfollowButtonStyles = makeStyles((theme) => ({
4 | containedButton: {
5 | float: "right",
6 | width: 101,
7 | "&:hover": {
8 | backgroundColor: theme.palette.error.dark
9 | }
10 | }
11 | }));
12 |
--------------------------------------------------------------------------------
/frontend/src/components/TweetImageModal/TweetInteractionCount/InteractionCount/InteractionCountStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useInteractionCountStyles = makeStyles(() => ({
4 | interactionCount: {
5 | "&:hover": {
6 | textDecoration: "underline",
7 | cursor: "pointer"
8 | }
9 | }
10 | }));
11 |
--------------------------------------------------------------------------------
/frontend/src/components/UsersItem/FollowButton/FollowButtonStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useFollowButtonStyles = makeStyles((theme) => ({
4 | outlinedButton: {
5 | float: "right",
6 | width: 79,
7 | "&:hover": {
8 | backgroundColor: theme.palette.secondary.light
9 | }
10 | }
11 | }));
12 |
--------------------------------------------------------------------------------
/commons/src/main/resources/sql-test/clear-chat-db.sql:
--------------------------------------------------------------------------------
1 | delete from "chat-test".public.user_blocked;
2 | delete from "chat-test".public.user_subscriptions;
3 | delete from "chat-test".public.user_follower_requests;
4 | delete from "chat-test".public.chats_participants;
5 | delete from "chat-test".public.chat_messages;
6 | delete from "chat-test".public.chats;
7 | delete from "chat-test".public.users;
8 |
--------------------------------------------------------------------------------
/frontend/src/components/QuoteIconButton/QuoteTweetModal/QuoteTweetModalStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useQuoteTweetModalStyles = makeStyles(() => ({
4 | content: {
5 | top: "-20%"
6 | },
7 | dialogContent: {
8 | width: 598,
9 | minHeight: 230,
10 | padding: "10px 20px 15px 20px"
11 | }
12 | }));
13 |
--------------------------------------------------------------------------------
/frontend/src/components/UsersItem/UnfollowButton/UnfollowButtonStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useUnfollowButtonStyles = makeStyles((theme) => ({
4 | containedButton: {
5 | float: "right",
6 | width: 101,
7 | "&:hover": {
8 | backgroundColor: theme.palette.error.dark
9 | }
10 | }
11 | }));
12 |
--------------------------------------------------------------------------------
/frontend/src/components/TweetImageModal/ImageCloseButton/ImageCloseButtonStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useImageCloseButtonStyles = makeStyles((theme) => ({
4 | imageModalClose: {
5 | margin: 10,
6 | "& svg": {
7 | height: "0.9em",
8 | color: theme.palette.common.white
9 | }
10 | }
11 | }));
12 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/AccessibilityDisplayLanguages/DataUsage/Autoplay/AutoplayStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useAutoplayStyles = makeStyles(() => ({
4 | infoItemWrapper: {
5 | padding: "12px 16px",
6 | "& .MuiTypography-h6, .MuiTypography-subtitle2": {
7 | marginBottom: 4
8 | }
9 | }
10 | }));
11 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/AccountInformation/ChangePhone/ChangePhoneStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useChangePhoneStyles = makeStyles((theme) => ({
4 | textFieldWrapper: {
5 | padding: "12px 16px",
6 | "& .MuiFormLabel-root.Mui-disabled": {
7 | color: theme.palette.grey[500]
8 | }
9 | }
10 | }));
11 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Notifications/PersonalizationAndData/PersonalizationAndDataStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const usePersonalizationAndDataStyles = makeStyles(() => ({
4 | switch: {
5 | float: "right"
6 | },
7 | subText: {
8 | marginTop: 12
9 | },
10 | content: {
11 | paddingBottom: 64
12 | }
13 | }));
--------------------------------------------------------------------------------
/frontend/src/store/ducks/chats/contracts/state.ts:
--------------------------------------------------------------------------------
1 | import { ChatResponse } from "../../../../types/chat";
2 | import { LoadingStatus } from "../../../../types/common";
3 |
4 | export interface ChatsState {
5 | items: ChatResponse[];
6 | loadingState: LoadingStatus;
7 | }
8 |
9 | export interface LeaveConversationRequest {
10 | participantId: number;
11 | chatId: number;
12 | }
13 |
--------------------------------------------------------------------------------
/localization-service/src/main/java/com/gmail/merikbest2015/dto/response/TranslationResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.response;
2 |
3 | import lombok.Data;
4 |
5 | import java.util.List;
6 |
7 | @Data
8 | public class TranslationResponse {
9 | private Long id;
10 | private String translationKey;
11 | private List translationValues;
12 | }
13 |
--------------------------------------------------------------------------------
/localization-service/src/main/java/com/gmail/merikbest2015/dto/response/TranslationValueResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.response;
2 |
3 | import com.gmail.merikbest2015.model.LanguageCode;
4 | import lombok.Data;
5 |
6 | @Data
7 | public class TranslationValueResponse {
8 | private Long id;
9 | private LanguageCode languageCode;
10 | private String value;
11 | }
12 |
--------------------------------------------------------------------------------
/localization-service/src/main/resources/db/migration/V1__Create_country_codes_table.sql:
--------------------------------------------------------------------------------
1 | CREATE SEQUENCE country_codes_seq START 1000 INCREMENT 1;
2 |
3 | CREATE TABLE country_codes
4 | (
5 | id INT8 NOT NULL,
6 | country_code VARCHAR(255) NOT NULL,
7 | phone_code VARCHAR(255) NOT NULL,
8 | country VARCHAR(255) NOT NULL,
9 | PRIMARY KEY (id)
10 | );
11 |
--------------------------------------------------------------------------------
/frontend/src/core/axios.ts:
--------------------------------------------------------------------------------
1 | import axios from "axios";
2 | import { TOKEN } from "../constants/common-constants";
3 |
4 | axios.interceptors.request.use((config) => {
5 | if (localStorage.getItem(TOKEN)) {
6 | config.headers["Authorization"] = localStorage.getItem(TOKEN);
7 | return config;
8 | } else {
9 | return config;
10 | }
11 | });
12 |
13 | export { axios };
14 |
--------------------------------------------------------------------------------
/frontend/src/hoc/withDocumentTitle.tsx:
--------------------------------------------------------------------------------
1 | import React, { ComponentType, useEffect } from "react";
2 |
3 | export const withDocumentTitle = (Component: ComponentType) => (title?: string) => (props: T) => {
4 |
5 | useEffect(() => {
6 | document.title = title ? `${title} / Twitter` : "Twitter";
7 | }, []);
8 |
9 | return ;
10 | };
11 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/MembersAndFollowers/FullListUserCount/FullListUserCountStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useFullListUserCountStyles = makeStyles(() => ({
4 | listMembers: {
5 | marginLeft: 20,
6 | "&:hover": {
7 | cursor: "pointer",
8 | textDecoration: "underline"
9 | }
10 | }
11 | }));
12 |
--------------------------------------------------------------------------------
/frontend/src/pages/Topics/TopicItem/FollowTopicButton/FollowTopicButtonStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useFollowTopicButtonStyles = makeStyles((theme) => ({
4 | outlinedButton: {
5 | float: "right",
6 | width: 79,
7 | "&:hover": {
8 | backgroundColor: theme.palette.secondary.light
9 | }
10 | }
11 | }));
12 |
--------------------------------------------------------------------------------
/notification-service/src/main/java/com/gmail/merikbest2015/repository/UserRepository.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository;
2 |
3 | import com.gmail.merikbest2015.model.User;
4 | import org.springframework.data.jpa.repository.JpaRepository;
5 | import org.springframework.stereotype.Repository;
6 |
7 | @Repository
8 | public interface UserRepository extends JpaRepository {
9 | }
10 |
--------------------------------------------------------------------------------
/notification-service/src/main/resources/db/migration/V2__Create_tweets_table.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE tweets
2 | (
3 | id INT8 NOT NULL,
4 | tweet_text VARCHAR(255) NOT NULL,
5 | tweet_type VARCHAR(255) NOT NULL DEFAULT 'TWEET',
6 | author_id INT8 NOT NULL REFERENCES users,
7 | PRIMARY KEY (id)
8 | );
9 | CREATE INDEX tweets_author_id_idx ON tweets (author_id);
10 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/dto/request/UserRequest.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.request;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class UserRequest {
7 | private String fullName;
8 | private String about;
9 | private String location;
10 | private String website;
11 | private String avatar;
12 | private String wallpaper;
13 | }
14 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/dto/request/IdsRequest.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.dto.request;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | import java.util.List;
8 |
9 | @Data
10 | @NoArgsConstructor
11 | @AllArgsConstructor
12 | public class IdsRequest {
13 | private List ids;
14 | }
15 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/event/PinTweetEvent.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.event;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | @Data
9 | @Builder
10 | @AllArgsConstructor
11 | @NoArgsConstructor
12 | public class PinTweetEvent {
13 | private Long tweetId;
14 | }
15 |
--------------------------------------------------------------------------------
/frontend/src/components/TweetImageModal/AddReplyToTweet/AddReplyToTweetStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useAddReplyToTweetStyles = makeStyles((theme) => ({
4 | replyWrapper: {
5 | margin: "16px 68px",
6 | "& a": {
7 | textDecoration: "none",
8 | color: theme.palette.primary.main
9 | }
10 | }
11 | }));
12 |
--------------------------------------------------------------------------------
/frontend/src/pages/Topics/TopicItem/UnfollowTopicButton/UnfollowTopicButtonStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useUnfollowTopicButtonStyles = makeStyles((theme) => ({
4 | containedButton: {
5 | float: "right",
6 | width: 101,
7 | "&:hover": {
8 | backgroundColor: theme.palette.error.dark
9 | }
10 | }
11 | }));
12 |
--------------------------------------------------------------------------------
/notification-service/src/main/java/com/gmail/merikbest2015/repository/ListsRepository.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository;
2 |
3 | import com.gmail.merikbest2015.model.Lists;
4 | import org.springframework.data.jpa.repository.JpaRepository;
5 | import org.springframework.stereotype.Repository;
6 |
7 | @Repository
8 | public interface ListsRepository extends JpaRepository {
9 | }
10 |
--------------------------------------------------------------------------------
/notification-service/src/main/java/com/gmail/merikbest2015/repository/TweetRepository.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository;
2 |
3 | import com.gmail.merikbest2015.model.Tweet;
4 | import org.springframework.data.jpa.repository.JpaRepository;
5 | import org.springframework.stereotype.Repository;
6 |
7 | @Repository
8 | public interface TweetRepository extends JpaRepository {
9 | }
10 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/event/UserEvent.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.event;
2 |
3 | public interface UserEvent {
4 | Long getId();
5 | String getFullName();
6 | String getUsername();
7 | String getAbout();
8 | String getAvatar();
9 | boolean isPrivateProfile();
10 | boolean isMutedDirectMessages();
11 | boolean isActive();
12 | }
13 |
--------------------------------------------------------------------------------
/frontend/src/components/LockIcon/LockIcon.tsx:
--------------------------------------------------------------------------------
1 | import React, { ReactElement } from "react";
2 | import { LockIcon as Icon } from "../../icons";
3 |
4 | import { useLockIconStyles } from "./LockIconStyles";
5 |
6 | const LockIcon = (): ReactElement => {
7 | const classes = useLockIconStyles();
8 |
9 | return {Icon};
10 | };
11 |
12 | export default LockIcon;
13 |
--------------------------------------------------------------------------------
/frontend/src/components/PopperUserWindow/PopperHeader/PopperHeaderStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const usePopperHeaderStyles = makeStyles(() => ({
4 | headerWrapper: {
5 | display: "flex",
6 | justifyContent: "space-between"
7 | },
8 | avatar: {
9 | width: "60px !important",
10 | height: "60px !important"
11 | }
12 | }));
13 |
--------------------------------------------------------------------------------
/lists-service/src/main/java/com/gmail/merikbest2015/constants/ListsErrorMessage.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.constants;
2 |
3 | public class ListsErrorMessage {
4 | public static final String LIST_NOT_FOUND = "List not found";
5 | public static final String INCORRECT_LIST_NAME_LENGTH = "Incorrect list name length";
6 | public static final String USER_ID_BLOCKED = "User with ID:%s is blocked";
7 | }
8 |
--------------------------------------------------------------------------------
/lists-service/src/main/java/com/gmail/merikbest2015/dto/request/ListsRequest.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.request;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class ListsRequest {
7 | private Long id;
8 | private String listName;
9 | private String description;
10 | private Boolean isPrivate;
11 | private String altWallpaper;
12 | private String wallpaper;
13 | }
14 |
--------------------------------------------------------------------------------
/frontend/src/components/PageWrapper/PageWrapperStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const usePageWrapperStyles = makeStyles(() => ({
4 | header: {
5 | justifyContent: "space-between",
6 | "& .MuiTypography-h5": {
7 | marginLeft: 16,
8 | display: "inline-block",
9 | verticalAlign: "middle"
10 | }
11 | }
12 | }));
13 |
--------------------------------------------------------------------------------
/chat-service/src/main/java/com/gmail/merikbest2015/dto/request/MessageWithTweetRequest.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.request;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 |
6 | import java.util.List;
7 |
8 | @Data
9 | @AllArgsConstructor
10 | public class MessageWithTweetRequest {
11 | private String text;
12 | private Long tweetId;
13 | private List usersIds;
14 | }
15 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/dto/response/notification/NotificationTweetResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.dto.response.notification;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class NotificationTweetResponse {
7 | private Long id;
8 | private String text;
9 | private NotificationUserResponse author;
10 | private boolean notificationCondition;
11 | }
12 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/AudienceAndTagging/AudienceAndTaggingStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useAudienceAndTaggingStyles = makeStyles(() => ({
4 | photoTaggingLink: {
5 | "& svg": {
6 | marginTop: 8
7 | }
8 | },
9 | photoTagInfo: {
10 | display: "inline-block",
11 | width: 200
12 | }
13 | }));
14 |
--------------------------------------------------------------------------------
/localization-service/src/main/java/com/gmail/merikbest2015/repository/GifImageRepository.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository;
2 |
3 | import com.gmail.merikbest2015.model.GifImage;
4 | import org.springframework.data.jpa.repository.JpaRepository;
5 | import org.springframework.stereotype.Repository;
6 |
7 | @Repository
8 | public interface GifImageRepository extends JpaRepository {
9 | }
10 |
--------------------------------------------------------------------------------
/localization-service/src/main/java/com/gmail/merikbest2015/repository/LanguageRepository.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository;
2 |
3 | import com.gmail.merikbest2015.model.Language;
4 | import org.springframework.data.jpa.repository.JpaRepository;
5 | import org.springframework.stereotype.Repository;
6 |
7 | @Repository
8 | public interface LanguageRepository extends JpaRepository {
9 | }
10 |
--------------------------------------------------------------------------------
/tweet-service/src/main/java/com/gmail/merikbest2015/repository/PollChoiceRepository.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository;
2 |
3 | import com.gmail.merikbest2015.model.PollChoice;
4 | import org.springframework.data.jpa.repository.JpaRepository;
5 | import org.springframework.stereotype.Repository;
6 |
7 | @Repository
8 | public interface PollChoiceRepository extends JpaRepository {
9 | }
10 |
--------------------------------------------------------------------------------
/tweet-service/src/main/java/com/gmail/merikbest2015/repository/TweetImageRepository.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository;
2 |
3 | import com.gmail.merikbest2015.model.TweetImage;
4 | import org.springframework.data.jpa.repository.JpaRepository;
5 | import org.springframework.stereotype.Repository;
6 |
7 | @Repository
8 | public interface TweetImageRepository extends JpaRepository {
9 | }
10 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/dto/ImageResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.dto;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 | import lombok.NoArgsConstructor;
6 | import lombok.Setter;
7 |
8 | @Getter
9 | @Setter
10 | @AllArgsConstructor
11 | @NoArgsConstructor
12 | public class ImageResponse {
13 | private Long id;
14 | private String src;
15 | }
16 |
--------------------------------------------------------------------------------
/frontend/src/pages/Messages/ChatMessages/EmptyChatMessages/EmptyChatMessagesStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useEmptyChatMessagesStyles = makeStyles(() => ({
4 | chatInfoWrapper: {
5 | width: 320,
6 | margin: "0px auto",
7 | paddingTop: 300
8 | },
9 | chatInfoButton: {
10 | marginTop: 27,
11 | height: 52
12 | }
13 | }));
14 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/AccessibilityDisplayLanguages/Accessibility/AccessibilityStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useAccessibilityStyles = makeStyles(() => ({
4 | accessibilityLink: {
5 | "& svg": {
6 | marginTop: 8
7 | }
8 | },
9 | accessibilityInfo: {
10 | display: "inline-block",
11 | width: 200
12 | }
13 | }));
14 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/AccountInformation/ChangeCountry/ChangeCountryStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useChangeCountryStyles = makeStyles(() => ({
4 | selectWrapper: {
5 | "& .MuiFormControl-root": {
6 | width: "100%"
7 | },
8 | "& .MuiTypography-subtitle2": {
9 | paddingTop: 2
10 | }
11 | }
12 | }));
13 |
--------------------------------------------------------------------------------
/chat-service/src/main/java/com/gmail/merikbest2015/service/ChatService.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.service;
2 |
3 | import com.gmail.merikbest2015.repository.projection.ChatProjection;
4 |
5 | import java.util.List;
6 |
7 | public interface ChatService {
8 |
9 | ChatProjection getChatById(Long chatId);
10 |
11 | List getUserChats();
12 |
13 | ChatProjection createChat(Long userId);
14 | }
15 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/event/UpdateTweetCountEvent.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.event;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | @Data
9 | @Builder
10 | @AllArgsConstructor
11 | @NoArgsConstructor
12 | public class UpdateTweetCountEvent {
13 | private boolean updateTweetsCount;
14 | }
15 |
--------------------------------------------------------------------------------
/frontend/.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 | # 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 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Notifications/ContentPreferences/ContentPreferencesStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useContentPreferencesStyles = makeStyles(() => ({
4 | personalizationLink: {
5 | "& svg": {
6 | marginTop: 8
7 | }
8 | },
9 | personalizationInfo: {
10 | display: "inline-block",
11 | width: 200
12 | }
13 | }));
14 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/UserTweets/UserTweetsStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useUserTweetsStyles = makeStyles((theme) => ({
4 | textWrapper: {
5 | margin: "40px 20px",
6 | textAlign: "center",
7 | "& .MuiTypography-subtitle1": {
8 | marginTop: 12
9 | }
10 | },
11 | button: {
12 | marginTop: 15
13 | }
14 | }));
15 |
--------------------------------------------------------------------------------
/frontend/src/components/LockIcon/__tests__/LockIcon.test.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | import { mountWithStore } from "../../../util/test-utils/test-helper";
4 | import LockIcon from "../LockIcon";
5 |
6 | describe("LockIcon", () => {
7 | it("should render correctly", () => {
8 | const wrapper = mountWithStore();
9 | expect(wrapper.find("#lockIcon").exists()).toBe(true);
10 | });
11 | });
12 |
--------------------------------------------------------------------------------
/frontend/src/components/TweetImageModal/TweetInteractionCount/TweetInteractionCountStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useTweetInteractionCountStyles = makeStyles(() => ({
4 | content: {
5 | display: "flex",
6 | alignItems: "center",
7 | margin: "16px 0",
8 | "& .MuiTypography-subtitle1": {
9 | marginLeft: 5
10 | }
11 | }
12 | }));
13 |
--------------------------------------------------------------------------------
/frontend/src/components/TweetImageModal/TweetText/TweetTextStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useTweetTextStyles = makeStyles((theme) => ({
4 | text: {
5 | fontWeight: 400,
6 | marginTop: 16,
7 | marginBottom: 16,
8 | wordBreak: "break-word",
9 | "& #hashtag": {
10 | color: theme.palette.primary.main
11 | }
12 | }
13 | }));
14 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/event/TweetTagEvent.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.event;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | @Data
9 | @Builder
10 | @AllArgsConstructor
11 | @NoArgsConstructor
12 | public class TweetTagEvent {
13 | private Long tweetId;
14 | private String tweetText;
15 | }
16 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/event/UpdateListsEvent.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.event;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | @Data
9 | @Builder
10 | @AllArgsConstructor
11 | @NoArgsConstructor
12 | public class UpdateListsEvent {
13 | private Long id;
14 | private String listName;
15 | }
16 |
--------------------------------------------------------------------------------
/frontend/src/components/Buttons/BlockButton/BlockButtonStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useBlockButtonStyles = makeStyles((theme) => ({
4 | containedButton: {
5 | width: 105,
6 | "&:hover": {
7 | backgroundColor: theme.palette.error.dark
8 | }
9 | },
10 | blockButton: {
11 | backgroundColor: theme.palette.error.main
12 | }
13 | }));
14 |
--------------------------------------------------------------------------------
/frontend/src/components/UsersItem/BlockButton/BlockButtonStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useBlockButtonStyles = makeStyles((theme) => ({
4 | containedButton: {
5 | width: 105,
6 | "&:hover": {
7 | backgroundColor: theme.palette.error.dark
8 | }
9 | },
10 | blockButton: {
11 | backgroundColor: theme.palette.error.main
12 | }
13 | }));
14 |
--------------------------------------------------------------------------------
/frontend/src/pages/Messages/ChatMessages/ChatMessagesStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useChatMessagesStyles = makeStyles(() => ({
4 | chatContainer: {
5 | minWidth: 600,
6 | padding: 0,
7 | borderLeft: 0
8 | },
9 | chat: {
10 | padding: "53px 15px",
11 | height: 900,
12 | overflowY: "auto",
13 | border: 0
14 | }
15 | }));
16 |
--------------------------------------------------------------------------------
/tweet-service/src/main/java/com/gmail/merikbest2015/dto/response/TweetUserResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.response;
2 |
3 | import com.gmail.merikbest2015.commons.dto.response.tweet.TweetResponse;
4 | import lombok.Getter;
5 | import lombok.Setter;
6 |
7 | import java.util.List;
8 |
9 | @Getter
10 | @Setter
11 | public class TweetUserResponse extends TweetResponse {
12 | private List retweetsUserIds;
13 | }
14 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/enums/TopicCategory.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.enums;
2 |
3 | public enum TopicCategory {
4 | FASHION_AND_BEAUTY,
5 | OUTDOORS,
6 | ARTS_AND_CULTURE,
7 | ANIMATION_AND_COMICS,
8 | BUSINESS_AND_FINANCE,
9 | FOOD,
10 | TRAVEL,
11 | ENTERTAINMENT,
12 | MUSIC,
13 | GAMING,
14 | CAREERS,
15 | SPORTS,
16 | ONLY_ON_TWITTER
17 | }
18 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/event/ListsNotificationDto.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.event;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | @Data
9 | @Builder
10 | @AllArgsConstructor
11 | @NoArgsConstructor
12 | public class ListsNotificationDto {
13 | private Long id;
14 | private String listName;
15 | }
16 |
--------------------------------------------------------------------------------
/commons/src/main/resources/sql-test/populate-tag-db.sql:
--------------------------------------------------------------------------------
1 | -- tags
2 | INSERT INTO "tag-test".public.tags (id, tag_name, tweets_quantity) VALUES (2, '#JetBrains', 2);
3 | INSERT INTO "tag-test".public.tags (id, tag_name, tweets_quantity) VALUES (3, '#test', 1);
4 |
5 | -- tweet_tags
6 | INSERT INTO "tag-test".public.tweet_tags (id, tag_id, tweet_id) VALUES (1, 2, 43);
7 | INSERT INTO "tag-test".public.tweet_tags (id, tag_id, tweet_id) VALUES (2, 3, 40);
8 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullList/ShareActionsModal/TweetListAction/TweetListModal/TweetListModalStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useTweetListModalStyles = makeStyles(() => ({
4 | content: {
5 | top: "-20%"
6 | },
7 | dialogContent: {
8 | width: 598,
9 | minHeight: "auto",
10 | overflow: "hidden",
11 | padding: "10px 20px 15px 20px"
12 | }
13 | }));
14 |
--------------------------------------------------------------------------------
/frontend/src/components/AddTweetForm/Poll/PollInput/PollInputField.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const usePollInputStyles = makeStyles(() => ({
4 | container: {
5 | marginBottom: 11,
6 | position: "relative"
7 | },
8 | content: {
9 | position: "absolute",
10 | right: 10,
11 | display: "flex",
12 | zIndex: 3,
13 | marginTop: 8
14 | }
15 | }));
16 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/EditProfileButton/SetupProfileModal/SetupProfileModalStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useSetupProfileModalStyles = makeStyles(() => ({
4 | container: {
5 | "& .MuiDialog-root": {
6 | height: 666,
7 | marginTop: 92
8 | },
9 | "& .MuiDialog-container": {
10 | padding: "0 32px"
11 | }
12 | }
13 | }));
14 |
--------------------------------------------------------------------------------
/scheduler-service/src/main/java/com/gmail/merikbest2015/dto/response/TriggerResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.response;
2 |
3 | import lombok.Builder;
4 | import lombok.Data;
5 |
6 | @Data
7 | @Builder
8 | public class TriggerResponse {
9 | private String triggerName;
10 | private String groupName;
11 | private String cronExpression;
12 | private String nextFireTime;
13 | private String previousFireTime;
14 | }
15 |
--------------------------------------------------------------------------------
/frontend/src/pages/FollowingFollowers/EmptyFollowersDescription/EmptyFollowersDescriptionStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useEmptyFollowersDescriptionStyles = makeStyles(() => ({
4 | content: {
5 | margin: "40px 20px",
6 | textAlign: "center",
7 | "& .MuiTypography-subtitle1": {
8 | marginTop: 12,
9 | marginBottom: 16
10 | }
11 | }
12 | }));
13 |
--------------------------------------------------------------------------------
/frontend/src/pages/Messages/StartConversation/StartConversationStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useStartConversationStyles = makeStyles(() => ({
4 | messagesTitle: {
5 | paddingTop: 83,
6 | margin: "0px 30px"
7 | },
8 | messagesText: {
9 | margin: "8px 30px 27px 30px"
10 | },
11 | messagesButton: {
12 | marginLeft: 30,
13 | height: 52
14 | }
15 | }));
16 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/event/UpdateTweetEvent.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.event;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | @Data
9 | @Builder
10 | @AllArgsConstructor
11 | @NoArgsConstructor
12 | public class UpdateTweetEvent {
13 | private Long id;
14 | private String text;
15 | // private User author;
16 | }
17 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/ReplyIconButton/ReplyIconButtonStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useReplyIconButtonStyles = makeStyles((theme) => ({
4 | infoIcon: {
5 | "& .MuiIconButton-root": {
6 | "& svg": {
7 | color: theme.palette.text.secondary,
8 | width: "1.406rem",
9 | height: "1.406rem"
10 | }
11 | }
12 | }
13 | }));
14 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/AccessibilityDisplayLanguages/Languages/LanguagesStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useLanguagesStyles = makeStyles(() => ({
4 | accessibilityWrapper: {
5 | "& svg": {
6 | marginTop: 10
7 | }
8 | },
9 | accessibilityInfo: {
10 | display: "inline-block",
11 | "& svg": {
12 | marginTop: 10
13 | }
14 | }
15 | }));
16 |
--------------------------------------------------------------------------------
/frontend/src/components/AddTweetForm/ScheduleDateInfo/ScheduleDateInfoStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useScheduleDateInfoStyles = makeStyles((theme) => ({
4 | infoWrapper: {
5 | marginBottom: 10,
6 | "& svg": {
7 | verticalAlign: "bottom",
8 | marginRight: 12,
9 | fill: theme.palette.text.secondary,
10 | height: "1.30em"
11 | }
12 | }
13 | }));
14 |
--------------------------------------------------------------------------------
/frontend/src/components/DialogTitleComponent/DialogTitleComponentStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles, Theme } from "@material-ui/core";
2 |
3 | interface DialogTitleComponentProps {
4 | borderBottom?: boolean;
5 | }
6 |
7 | export const useDialogTitleComponentStyles = makeStyles(() => ({
8 | dialogTitle: (props) => (props.borderBottom ? { borderBottom: 0 } : {}),
9 | button: {
10 | marginLeft: "auto"
11 | }
12 | }));
13 |
--------------------------------------------------------------------------------
/frontend/src/hook/useFocus.ts:
--------------------------------------------------------------------------------
1 | import { useState } from "react";
2 |
3 | interface UseFocusProps {
4 | onBlur: () => void;
5 | focused: boolean;
6 | onFocus: () => void;
7 | }
8 |
9 | export const useFocus = (): UseFocusProps => {
10 | const [focused, setFocused] = useState(false);
11 |
12 | const onFocus = () => setFocused(true);
13 | const onBlur = () => setFocused(false);
14 |
15 | return { focused, onFocus, onBlur };
16 | };
17 |
--------------------------------------------------------------------------------
/frontend/src/index.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import ReactDOM from "react-dom";
3 | import { Provider } from "react-redux";
4 | import { BrowserRouter as Router } from "react-router-dom";
5 |
6 | import App from "./App";
7 | import { store } from "./store/store";
8 |
9 | ReactDOM.render(
10 |
11 |
12 |
13 |
14 |
15 | , document.getElementById("root")
16 | );
17 |
--------------------------------------------------------------------------------
/frontend/src/store/ducks/userDetail/contracts/state.ts:
--------------------------------------------------------------------------------
1 | import { CancelTokenSource } from "axios";
2 | import { UserDetailResponse } from "../../../../types/user";
3 | import { LoadingStatus } from "../../../../types/common";
4 |
5 | export interface UserDetailState {
6 | item?: UserDetailResponse;
7 | loadingState: LoadingStatus;
8 | }
9 |
10 | export interface UserDetailsRequest {
11 | userId: number,
12 | cancelTokenSource: CancelTokenSource
13 | }
14 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/event/UserNotificationDto.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.event;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | @Data
9 | @Builder
10 | @AllArgsConstructor
11 | @NoArgsConstructor
12 | public class UserNotificationDto {
13 | private Long id;
14 | private String username;
15 | private String avatar;
16 | }
17 |
--------------------------------------------------------------------------------
/frontend/src/components/SideMenu/SideMenuHomeItem/SideMenuHomeItemStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useSideMenuHomeItemStyles = makeStyles((theme) => ({
4 | homeNotification: {
5 | position: "absolute",
6 | marginLeft: 20,
7 | marginBottom: 25,
8 | width: 6,
9 | height: 6,
10 | borderRadius: "50%",
11 | backgroundColor: theme.palette.primary.main
12 | }
13 | }));
14 |
--------------------------------------------------------------------------------
/frontend/src/store/ducks/listDetail/contracts/state.ts:
--------------------------------------------------------------------------------
1 | import { CancelTokenSource } from "axios";
2 | import { BaseListResponse } from "../../../../types/lists";
3 | import { LoadingStatus } from "../../../../types/common";
4 |
5 | export interface ListDetailState {
6 | item?: BaseListResponse;
7 | loadingState: LoadingStatus;
8 | }
9 |
10 |
11 | export interface ListDetailsRequest {
12 | listId: number,
13 | cancelTokenSource: CancelTokenSource
14 | }
15 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/service/MuteUserService.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.service;
2 |
3 | import com.gmail.merikbest2015.repository.projection.MutedUserProjection;
4 | import org.springframework.data.domain.Page;
5 | import org.springframework.data.domain.Pageable;
6 |
7 | public interface MuteUserService {
8 |
9 | Page getMutedList(Pageable pageable);
10 |
11 | Boolean processMutedList(Long userId);
12 | }
13 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/constants/ErrorMessage.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.constants;
2 |
3 | public class ErrorMessage {
4 | public static final String JWT_TOKEN_EXPIRED = "JWT token is expired or invalid";
5 | public static final String USER_NOT_FOUND = "User not found";
6 | public static final String USER_PROFILE_BLOCKED = "User profile blocked";
7 | public static final String USER_ID_NOT_FOUND = "User (id:%s) not found";
8 | }
9 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/dto/HeaderResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.dto;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 | import org.springframework.http.HttpHeaders;
7 |
8 | import java.util.List;
9 |
10 | @Data
11 | @NoArgsConstructor
12 | @AllArgsConstructor
13 | public class HeaderResponse {
14 | private List items;
15 | private HttpHeaders headers;
16 | }
17 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/dto/response/SearchResultResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.response;
2 |
3 | import com.gmail.merikbest2015.commons.dto.response.user.CommonUserResponse;
4 | import lombok.Data;
5 |
6 | import java.util.List;
7 |
8 | @Data
9 | public class SearchResultResponse {
10 | private String text;
11 | private Long tweetCount;
12 | private List tags;
13 | private List users;
14 | }
15 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/service/BlockUserService.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.service;
2 |
3 | import com.gmail.merikbest2015.repository.projection.BlockedUserProjection;
4 | import org.springframework.data.domain.Page;
5 | import org.springframework.data.domain.Pageable;
6 |
7 | public interface BlockUserService {
8 |
9 | Page getBlockList(Pageable pageable);
10 |
11 | Boolean processBlockList(Long userId);
12 | }
13 |
--------------------------------------------------------------------------------
/frontend/src/pages/Messages/ChatMessages/ChatHeader/ChatHeaderStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useChatHeaderStyles = makeStyles((theme) => ({
4 | chatHeader: {
5 | width: 598
6 | },
7 | chatAvatar: {
8 | width: theme.spacing(4),
9 | height: theme.spacing(4),
10 | margin: "0px 15px"
11 | },
12 | iconGroup: {
13 | marginLeft: "auto",
14 | marginRight: 10
15 | }
16 | }));
17 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/dto/response/notification/NotificationUserResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.dto.response.notification;
2 |
3 | import com.fasterxml.jackson.annotation.JsonProperty;
4 | import lombok.Data;
5 |
6 | @Data
7 | public class NotificationUserResponse {
8 | private Long id;
9 | private String username;
10 | private String avatar;
11 |
12 | @JsonProperty("isFollower")
13 | private boolean isFollower;
14 | }
15 |
--------------------------------------------------------------------------------
/eureka-server/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8761
3 |
4 | spring:
5 | application:
6 | name: eureka-server
7 | zipkin:
8 | base-url: http://${ZIPKIN_HOST:localhost}:9411
9 |
10 | eureka:
11 | client:
12 | service-url:
13 | defaultZone: http://${EUREKA_HOST:localhost}:8761/eureka
14 | fetch-registry: false
15 | register-with-eureka: false
16 | instance:
17 | hostname: ${EUREKA_HOST:localhost}
18 |
--------------------------------------------------------------------------------
/frontend/src/components/TweetComponent/TweetText/__tests__/TweetText.test.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | import { mountWithStore } from "../../../../util/test-utils/test-helper";
4 | import TweetText from "../TweetText";
5 |
6 | describe("TweetText", () => {
7 | it("should render correctly", () => {
8 | const wrapper = mountWithStore();
9 | expect(wrapper.text().includes("test_text")).toBe(true);
10 | });
11 | });
12 |
--------------------------------------------------------------------------------
/frontend/src/services/api/tweet-service/externalApi.ts:
--------------------------------------------------------------------------------
1 | import { AxiosResponse } from "axios";
2 |
3 | import { GiphyDataProps } from "../../../types/tweet";
4 | import { axios } from "../../../core/axios";
5 | import { GIPHY_API_URL } from "../../../constants/url-constants";
6 |
7 | export const ExternalApi = {
8 | async searchGif(text: string): Promise> {
9 | return await axios.get(`${GIPHY_API_URL}${text}`);
10 | }
11 | };
12 |
--------------------------------------------------------------------------------
/frontend/src/store/ducks/actionSnackbar/selector.ts:
--------------------------------------------------------------------------------
1 | import { RootState } from "../../store";
2 | import { ActionSnackbarState } from "./contracts/state";
3 |
4 | export const selectActionSnackbarState = (state: RootState): ActionSnackbarState => state.actionSnackbar;
5 | export const selectSnackBarMessage = (state: RootState): string => selectActionSnackbarState(state).snackBarMessage;
6 | export const selectOpenSnackBar = (state: RootState): boolean => selectActionSnackbarState(state).openSnackBar;
7 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/exception/ApiRequestException.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.exception;
2 |
3 | import lombok.Getter;
4 | import org.springframework.http.HttpStatus;
5 |
6 | @Getter
7 | public class ApiRequestException extends RuntimeException {
8 | private final HttpStatus status;
9 |
10 | public ApiRequestException(String message, HttpStatus status) {
11 | super(message);
12 | this.status = status;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/frontend/src/components/ConnectToUsers/ConnectToUsersStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useConnectToUsersStyles = makeStyles(() => ({
4 | header: {
5 | display: "flex",
6 | alignItems: "center",
7 | flex: 1,
8 | borderTop: 0,
9 | borderLeft: 0,
10 | borderRight: 0,
11 | borderRadius: 0,
12 | "& .MuiTypography-h5": {
13 | margin: "10px 20px"
14 | }
15 | }
16 | }));
17 |
--------------------------------------------------------------------------------
/notification-service/src/main/java/com/gmail/merikbest2015/service/UserHandlerService.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.service;
2 |
3 | import com.gmail.merikbest2015.commons.event.UpdateUserEvent;
4 | import com.gmail.merikbest2015.commons.event.UserNotificationDto;
5 | import com.gmail.merikbest2015.model.User;
6 |
7 | public interface UserHandlerService {
8 |
9 | User handleNewOrUpdateUser(UpdateUserEvent userEvent);
10 |
11 | User getOrCreateUser(UserNotificationDto user);
12 | }
13 |
--------------------------------------------------------------------------------
/frontend/src/components/FollowListButton/FollowListButtonStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useFollowListButtonStyles = makeStyles((theme) => ({
4 | listPrimaryButton: {
5 | width: 105,
6 | "&:hover": {
7 | backgroundColor: theme.palette.error.dark
8 | }
9 | },
10 | listOutlinedButton: {
11 | "&:hover": {
12 | backgroundColor: theme.palette.secondary.light
13 | }
14 | }
15 | }));
16 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/ListsHeader/CreateListsModal/CreateListsModalInput/CreateListsModalInputStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useCreateListsModalInputStyles = makeStyles(() => ({
4 | container: {
5 | padding: "12px 16px",
6 | position: "relative"
7 | },
8 | content: {
9 | position: "absolute",
10 | right: 25,
11 | display: "flex",
12 | zIndex: 3,
13 | marginTop: 8
14 | }
15 | }));
16 |
--------------------------------------------------------------------------------
/notification-service/src/main/java/com/gmail/merikbest2015/service/ListsHandlerService.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.service;
2 |
3 | import com.gmail.merikbest2015.commons.event.ListsNotificationDto;
4 | import com.gmail.merikbest2015.commons.event.UpdateListsEvent;
5 | import com.gmail.merikbest2015.model.Lists;
6 |
7 | public interface ListsHandlerService {
8 |
9 | void handleUpdateList(UpdateListsEvent listsEvent);
10 |
11 | Lists getOrCreateList(ListsNotificationDto lists);
12 | }
13 |
--------------------------------------------------------------------------------
/chat-service/src/main/java/com/gmail/merikbest2015/dto/response/UserChatResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.response;
2 |
3 | import com.fasterxml.jackson.annotation.JsonProperty;
4 | import com.gmail.merikbest2015.commons.dto.response.user.UserResponse;
5 | import lombok.Getter;
6 | import lombok.Setter;
7 |
8 | @Getter
9 | @Setter
10 | public class UserChatResponse extends UserResponse {
11 | @JsonProperty("isUserChatParticipant")
12 | private boolean isUserChatParticipant;
13 | }
14 |
--------------------------------------------------------------------------------
/notification-service/src/main/java/com/gmail/merikbest2015/service/TweetHandlerService.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.service;
2 |
3 | import com.gmail.merikbest2015.commons.event.TweetNotificationDto;
4 | import com.gmail.merikbest2015.commons.event.UpdateTweetEvent;
5 | import com.gmail.merikbest2015.model.Tweet;
6 |
7 | public interface TweetHandlerService {
8 |
9 | void handleUpdateTweet(UpdateTweetEvent tweetEvent);
10 |
11 | Tweet getOrCreateTweet(TweetNotificationDto tweet);
12 | }
13 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/dto/response/user/CommonUserResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.dto.response.user;
2 |
3 | import com.fasterxml.jackson.annotation.JsonProperty;
4 | import lombok.Data;
5 |
6 | @Data
7 | public class CommonUserResponse {
8 | private Long id;
9 | private String fullName;
10 | private String username;
11 | private String avatar;
12 |
13 | @JsonProperty("isPrivateProfile")
14 | private boolean privateProfile;
15 | }
16 |
--------------------------------------------------------------------------------
/topic-service/src/main/java/com/gmail/merikbest2015/repository/projection/FollowedTopicProjection.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository.projection;
2 |
3 | import com.gmail.merikbest2015.commons.enums.TopicCategory;
4 | import org.springframework.beans.factory.annotation.Value;
5 |
6 | public interface FollowedTopicProjection {
7 | Long getId();
8 | String getTopicName();
9 | TopicCategory getTopicCategory();
10 |
11 | @Value("#{true}")
12 | boolean getIsTopicFollowed();
13 | }
14 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/dto/request/ProcessEmailRequest.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.request;
2 |
3 | import com.gmail.merikbest2015.constants.Regexp;
4 | import com.gmail.merikbest2015.constants.UserErrorMessage;
5 | import lombok.Data;
6 |
7 | import jakarta.validation.constraints.Email;
8 |
9 | @Data
10 | public class ProcessEmailRequest {
11 | @Email(regexp = Regexp.USER_EMAIL_REGEXP, message = UserErrorMessage.EMAIL_NOT_VALID)
12 | private String email;
13 | }
14 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/TweetErrorPage/TweetErrorPageStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useTweetErrorPageStyles = makeStyles(() => ({
4 | error: {
5 | width: 350,
6 | margin: "0 auto",
7 | paddingTop: 200,
8 | paddingBottom: 20,
9 | fontWeight: 700,
10 | textAlign: "center"
11 | },
12 | searchButton: {
13 | display: "block",
14 | width: 76,
15 | margin: "0 auto"
16 | }
17 | }));
18 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/PopperListWindow/PopperListInteractionCount/PopperListUserCount/PopperListUserCountStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const usePopperListUserCountStyles = makeStyles(() => ({
4 | popperListMembers: {
5 | marginLeft: 20,
6 | "& .MuiTypography-h6": {
7 | fontWeight: 700
8 | },
9 | "&:hover": {
10 | cursor: "pointer",
11 | textDecoration: "underline"
12 | }
13 | }
14 | }));
15 |
--------------------------------------------------------------------------------
/frontend/src/util/upload-image-helper.ts:
--------------------------------------------------------------------------------
1 | import axios from "axios";
2 | import { UI_V1_IMAGE_UPLOAD } from "../constants/endpoint-constants";
3 |
4 | export const uploadImage = async (image: File): Promise => {
5 | const formData = new FormData();
6 | formData.append("file", image);
7 |
8 | const { data } = await axios.post(UI_V1_IMAGE_UPLOAD, formData, {
9 | headers: {
10 | "Content-Type": "multipart/form-data"
11 | }
12 | });
13 |
14 | return data;
15 | };
16 |
--------------------------------------------------------------------------------
/scheduler-service/src/main/java/com/gmail/merikbest2015/dto/response/JobDetailResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.response;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | @Data
9 | @Builder
10 | @AllArgsConstructor
11 | @NoArgsConstructor
12 | public class JobDetailResponse {
13 | private String name;
14 | private String group;
15 | private String description;
16 | private String jobClass;
17 | }
18 |
--------------------------------------------------------------------------------
/frontend/src/setupTests.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import Adapter from "enzyme-adapter-react-16";
3 | import { configure } from "enzyme";
4 |
5 | configure({ adapter: new Adapter() });
6 |
7 | window.matchMedia = (query) => ({
8 | matches: false,
9 | media: query,
10 | onchange: null,
11 | addListener: jest.fn(), // Deprecated
12 | removeListener: jest.fn(), // Deprecated
13 | addEventListener: jest.fn(),
14 | removeEventListener: jest.fn(),
15 | dispatchEvent: jest.fn()
16 | });
17 |
--------------------------------------------------------------------------------
/frontend/src/components/AddTweetForm/GifIconButton/GifModalWindow/GifModalWindowStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useGifModalWindowStyles = makeStyles(() => ({
4 | imageListItem: {
5 | "& .MuiImageListItemBar-root": {
6 | backgroundColor: "transparent"
7 | },
8 | "& .MuiTypography-root": {
9 | color: "rgb(255, 255, 255)"
10 | },
11 | "&:hover": {
12 | cursor: "pointer"
13 | }
14 | }
15 | }));
16 |
--------------------------------------------------------------------------------
/frontend/src/components/TaggedImageUsers/TaggedImageUsersStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useTaggedImageUsersStyles = makeStyles(() => ({
4 | taggedImageUsers: {
5 | display: "flex",
6 | alignItems: "center",
7 | "&:hover": {
8 | textDecoration: "underline",
9 | cursor: "pointer"
10 | },
11 | "& svg": {
12 | verticalAlign: "bottom",
13 | height: "1.25em"
14 | }
15 | }
16 | }));
17 |
--------------------------------------------------------------------------------
/frontend/src/components/Welcome/WelcomeStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useWelcomeStyles = makeStyles(() => ({
4 | info: {
5 | padding: "40px 20px",
6 | textAlign: "center",
7 | "& .MuiTypography-subtitle1": {
8 | marginTop: 12,
9 | marginBottom: 20
10 | }
11 | },
12 | infoButtonContainer: {
13 | display: "flex",
14 | justifyContent: "center",
15 | alignItems: "center"
16 | }
17 | }));
18 |
--------------------------------------------------------------------------------
/frontend/src/hook/useDebounce.ts:
--------------------------------------------------------------------------------
1 | import { useEffect, useState } from "react";
2 |
3 | export const useDebounce = (value: string, delay: number): string => {
4 | const [debouncedValue, setDebouncedValue] = useState(value);
5 |
6 | useEffect(() => {
7 | const handler = setTimeout(() => {
8 | setDebouncedValue(value);
9 | }, delay);
10 |
11 | return () => {
12 | clearTimeout(handler);
13 | };
14 | }, [value, delay]);
15 |
16 | return debouncedValue;
17 | };
18 |
--------------------------------------------------------------------------------
/frontend/src/pages/Topics/Suggested/__tests__/SuggestedButton.test.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | import { createMockRootState, mountWithStore } from "../../../../util/test-utils/test-helper";
4 | import SuggestedButton from "../SuggestedButton";
5 |
6 | describe("SuggestedButton", () => {
7 | it("should render correctly", () => {
8 | const wrapper = mountWithStore(, createMockRootState());
9 | expect(wrapper.text().includes("test")).toBe(true);
10 | });
11 | });
12 |
--------------------------------------------------------------------------------
/frontend/src/services/api/localization-service/gifImageApi.ts:
--------------------------------------------------------------------------------
1 | import { AxiosResponse } from "axios";
2 |
3 | import { GifImageResponse } from "../../../types/localization";
4 | import { axios } from "../../../core/axios";
5 | import { UI_V1_LOCALIZATION_GIF_IMAGES } from "../../../constants/endpoint-constants";
6 |
7 | export const GifImageApi = {
8 | async getGifImages(): Promise> {
9 | return await axios.get(UI_V1_LOCALIZATION_GIF_IMAGES);
10 | }
11 | };
12 |
--------------------------------------------------------------------------------
/frontend/src/services/api/localization-service/languageApi.ts:
--------------------------------------------------------------------------------
1 | import { AxiosResponse } from "axios";
2 |
3 | import { LanguagesResponse } from "../../../types/localization";
4 | import { axios } from "../../../core/axios";
5 | import { UI_V1_LOCALIZATION_LANGUAGES } from "../../../constants/endpoint-constants";
6 |
7 | export const LanguageApi = {
8 | async getLanguages(): Promise> {
9 | return await axios.get(UI_V1_LOCALIZATION_LANGUAGES);
10 | }
11 | };
12 |
--------------------------------------------------------------------------------
/topic-service/src/main/java/com/gmail/merikbest2015/repository/projection/NotInterestedTopicProjection.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository.projection;
2 |
3 | import com.gmail.merikbest2015.commons.enums.TopicCategory;
4 | import org.springframework.beans.factory.annotation.Value;
5 |
6 | public interface NotInterestedTopicProjection {
7 | Long getId();
8 | String getTopicName();
9 | TopicCategory getTopicCategory();
10 |
11 | @Value("#{true}")
12 | boolean getIsTopicNotInterested();
13 | }
14 |
--------------------------------------------------------------------------------
/chat-service/src/main/java/com/gmail/merikbest2015/repository/projection/ChatProjection.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository.projection;
2 |
3 | import java.time.LocalDateTime;
4 | import java.util.List;
5 |
6 | public interface ChatProjection {
7 | Long getId();
8 | LocalDateTime getCreatedAt();
9 | List getParticipants();
10 |
11 | interface ChatParticipantProjection {
12 | ChatUserParticipantProjection getUser();
13 | boolean getLeftChat();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/frontend/src/components/TweetDeleted/TweetDeletedStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useTweetDeletedStyles = makeStyles((theme) => ({
4 | container: {
5 | padding: "12px 16px",
6 | marginTop: 16,
7 | backgroundColor: theme.palette.secondary.main,
8 | color: theme.palette.text.secondary,
9 | borderRadius: 16,
10 | fontSize: 15,
11 | lineHeight: "20px",
12 | border: `1px solid ${theme.palette.grey[200]}`
13 | }
14 | }));
15 |
--------------------------------------------------------------------------------
/frontend/src/pages/Messages/ConversationInfo/ConversationHeader/__tests__/ConversationHeader.test.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | import { mountWithStore } from "../../../../../util/test-utils/test-helper";
4 | import ConversationHeader from "../ConversationHeader";
5 |
6 | describe("ConversationHeader", () => {
7 | it("should render correctly", () => {
8 | const wrapper = mountWithStore();
9 | expect(wrapper.text().includes("Conversation info")).toBe(true);
10 | });
11 | });
12 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/Account/AccountInformation/ChangeLanguage/ChangeLanguageStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useChangeLanguageStyles = makeStyles(() => ({
4 | selectWrapper: {
5 | padding: "12px 16px",
6 | "& .MuiFormControl-root": {
7 | width: "100%"
8 | }
9 | },
10 | languageInfo: {
11 | paddingTop: 2
12 | },
13 | buttonWrapper: {
14 | padding: "12px 16px",
15 | float: "right"
16 | }
17 | }));
18 |
--------------------------------------------------------------------------------
/frontend/src/services/api/localization-service/wallpaperApi.ts:
--------------------------------------------------------------------------------
1 | import { AxiosResponse } from "axios";
2 |
3 | import { WallpaperResponse } from "../../../types/localization";
4 | import { axios } from "../../../core/axios";
5 | import { UI_V1_LOCALIZATION_WALLPAPERS } from "../../../constants/endpoint-constants";
6 |
7 | export const WallpaperApi = {
8 | async getWallpapers(): Promise> {
9 | return await axios.get(UI_V1_LOCALIZATION_WALLPAPERS);
10 | }
11 | };
12 |
--------------------------------------------------------------------------------
/frontend/src/store/ducks/actionSnackbar/actionCreators.ts:
--------------------------------------------------------------------------------
1 | import {
2 | ActionSnackbarTypes,
3 | SetCloseSnackBarActionInterface,
4 | SetOpenSnackBarActionInterface
5 | } from "./contracts/actionTypes";
6 |
7 | export const setOpenSnackBar = (payload: string): SetOpenSnackBarActionInterface => ({
8 | type: ActionSnackbarTypes.SET_OPEN_SNACKBAR,
9 | payload
10 | });
11 |
12 | export const setCloseSnackBar = (): SetCloseSnackBarActionInterface => ({
13 | type: ActionSnackbarTypes.SET_CLOSE_SNACKBAR
14 | });
15 |
--------------------------------------------------------------------------------
/lists-service/src/main/java/com/gmail/merikbest2015/repository/projection/PinnedListProjection.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository.projection;
2 |
3 | import org.springframework.beans.factory.annotation.Value;
4 |
5 | public interface PinnedListProjection {
6 | Long getId();
7 | String getListName();
8 | String getAltWallpaper();
9 | String getWallpaper();
10 | boolean getIsPrivate();
11 |
12 | @Value("#{@listsServiceHelper.isListPinned(target.id)}")
13 | boolean getIsListPinned();
14 | }
15 |
--------------------------------------------------------------------------------
/frontend/src/pages/Lists/PinnedLists/PinnedListsStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const usePinnedListsStyles = makeStyles(() => ({
4 | pinnedLists: {
5 | paddingTop: 52,
6 | minHeight: 220,
7 | borderTop: 0,
8 | borderLeft: 0,
9 | borderRight: 0,
10 | borderRadius: 0
11 | },
12 | pinnedListsWrapper: {
13 | padding: 4
14 | },
15 | pinnedListsText: {
16 | marginTop: 32,
17 | marginLeft: 32
18 | }
19 | }));
20 |
--------------------------------------------------------------------------------
/frontend/src/pages/Notifications/NotificationsTab/NotificationAuthorItem/NotificationAuthorItemStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useNotificationAuthorItemStyles = makeStyles((theme) => ({
4 | notificationAvatarWrapper: {
5 | display: "inline-block"
6 | },
7 | notificationAvatar: {
8 | display: "inline-block",
9 | marginRight: 8,
10 | width: theme.spacing(4),
11 | height: theme.spacing(4),
12 | marginBottom: 11
13 | }
14 | }));
15 |
--------------------------------------------------------------------------------
/frontend/src/store/ducks/localization/contracts/state.ts:
--------------------------------------------------------------------------------
1 | import { LoadingStatus } from "../../../../types/common";
2 | import {
3 | CountryCodeResponse,
4 | GifImageResponse,
5 | LanguagesResponse,
6 | WallpaperResponse
7 | } from "../../../../types/localization";
8 |
9 | export interface LocalizationState {
10 | countryCodes: CountryCodeResponse[];
11 | gifImages: GifImageResponse[];
12 | languages: LanguagesResponse[];
13 | wallpapers: WallpaperResponse[];
14 | loadingState: LoadingStatus;
15 | }
16 |
--------------------------------------------------------------------------------
/chat-service/src/main/java/com/gmail/merikbest2015/ChatServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.openfeign.EnableFeignClients;
6 |
7 | @EnableFeignClients
8 | @SpringBootApplication
9 | public class ChatServiceApplication {
10 | public static void main(String[] args) {
11 | SpringApplication.run(ChatServiceApplication.class, args);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/frontend/src/components/TweetComponent/AnalyticsIconButton/AnalyticsIconButtonStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useAnalyticsIconButtonStyles = makeStyles((theme) => ({
4 | replyIcon: {
5 | "& .MuiIconButton-root": {
6 | "& svg": {
7 | color: theme.palette.text.secondary
8 | }
9 | },
10 | "& span": {
11 | verticalAlign: "middle",
12 | color: theme.palette.text.secondary
13 | }
14 | }
15 | }));
16 |
--------------------------------------------------------------------------------
/tag-service/src/main/java/com/gmail/merikbest2015/TagServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.openfeign.EnableFeignClients;
6 |
7 | @EnableFeignClients
8 | @SpringBootApplication
9 | public class TagServiceApplication {
10 | public static void main(String[] args) {
11 | SpringApplication.run(TagServiceApplication.class, args);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/tweet-service/src/main/java/com/gmail/merikbest2015/service/BookmarkService.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.service;
2 |
3 | import com.gmail.merikbest2015.repository.projection.BookmarkProjection;
4 | import org.springframework.data.domain.Page;
5 | import org.springframework.data.domain.Pageable;
6 |
7 | public interface BookmarkService {
8 |
9 | Page getUserBookmarks(Pageable pageable);
10 |
11 | Boolean processUserBookmarks(Long tweetId);
12 |
13 | Boolean getIsTweetBookmarked(Long tweetId);
14 | }
15 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/UserServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.openfeign.EnableFeignClients;
6 |
7 | @EnableFeignClients
8 | @SpringBootApplication
9 | public class UserServiceApplication {
10 | public static void main(String[] args) {
11 | SpringApplication.run(UserServiceApplication.class, args);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/frontend/src/store/ducks/chatMessages/contracts/state.ts:
--------------------------------------------------------------------------------
1 | import { ChatMessageResponse } from "../../../../types/chat";
2 | import { LoadingStatus } from "../../../../types/common";
3 |
4 | export interface ChatMessageState {
5 | items: ChatMessageResponse[];
6 | loadingState: LoadingStatus;
7 | }
8 |
9 | export interface ChatMessageRequest {
10 | chatId: number;
11 | text: string;
12 | }
13 |
14 | export interface ChatMessageWithTweetRequest {
15 | text: string;
16 | tweetId: number;
17 | usersIds: number[];
18 | }
19 |
--------------------------------------------------------------------------------
/lists-service/src/main/java/com/gmail/merikbest2015/ListsServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.openfeign.EnableFeignClients;
6 |
7 | @EnableFeignClients
8 | @SpringBootApplication
9 | public class ListsServiceApplication {
10 | public static void main(String[] args) {
11 | SpringApplication.run(ListsServiceApplication.class, args);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/topic-service/src/main/java/com/gmail/merikbest2015/TopicServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.openfeign.EnableFeignClients;
6 |
7 | @EnableFeignClients
8 | @SpringBootApplication
9 | public class TopicServiceApplication {
10 | public static void main(String[] args) {
11 | SpringApplication.run(TopicServiceApplication.class, args);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/tweet-service/src/main/java/com/gmail/merikbest2015/TweetServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.openfeign.EnableFeignClients;
6 |
7 | @EnableFeignClients
8 | @SpringBootApplication
9 | public class TweetServiceApplication {
10 | public static void main(String[] args) {
11 | SpringApplication.run(TweetServiceApplication.class, args);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**/target/
5 | !**/src/test/**/target/
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 | !**/src/main/**/build/
30 | !**/src/test/**/build/
31 |
32 | ### VS Code ###
33 | .vscode/
34 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/event/SendEmailEvent.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.event;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | import java.util.Map;
9 |
10 | @Data
11 | @Builder
12 | @AllArgsConstructor
13 | @NoArgsConstructor
14 | public class SendEmailEvent {
15 | private String toEmail;
16 | private String subject;
17 | private String template;
18 | private Map attributes;
19 | }
20 |
--------------------------------------------------------------------------------
/frontend/src/services/api/localization-service/countryCodeApi.ts:
--------------------------------------------------------------------------------
1 | import { AxiosResponse } from "axios";
2 |
3 | import { CountryCodeResponse } from "../../../types/localization";
4 | import { axios } from "../../../core/axios";
5 | import { UI_V1_LOCALIZATION_COUNTRY_CODES } from "../../../constants/endpoint-constants";
6 |
7 | export const CountryCodeApi = {
8 | async getCountryCodes(): Promise> {
9 | return await axios.get(UI_V1_LOCALIZATION_COUNTRY_CODES);
10 | }
11 | };
12 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/dto/request/EmailRequest.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.dto.request;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | import java.util.Map;
9 |
10 | @Data
11 | @Builder
12 | @AllArgsConstructor
13 | @NoArgsConstructor
14 | public class EmailRequest {
15 | private String to;
16 | private String subject;
17 | private String template;
18 | private Map attributes;
19 | }
20 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/Discoverability/ManageContacts/ManageContactsStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useManageContactsStyles = makeStyles((theme) => ({
4 | removeContacts: {
5 | textAlign: "center",
6 | padding: 16,
7 | cursor: "pointer",
8 | "& .MuiTypography-body1": {
9 | color: theme.palette.error.main
10 | },
11 | "&:hover": {
12 | backgroundColor: "rgba(244, 33, 46, 0.1)"
13 | }
14 | }
15 | }));
16 |
--------------------------------------------------------------------------------
/notification-service/src/main/resources/db/migration/V4__Create_notifications_table.sql:
--------------------------------------------------------------------------------
1 | CREATE SEQUENCE notifications_seq START 100 INCREMENT 1;
2 |
3 | CREATE TABLE notifications
4 | (
5 | id INT8 NOT NULL,
6 | created_at TIMESTAMP NOT NULL,
7 | notification_type VARCHAR(255) NOT NULL,
8 | list_id INT8,
9 | notified_user_id INT8 NOT NULL,
10 | tweet_id INT8,
11 | user_id INT8 NOT NULL,
12 | user_to_follow_id INT8,
13 | PRIMARY KEY (id)
14 | );
15 |
--------------------------------------------------------------------------------
/eureka-server/src/main/java/com/gmail/merikbest2015/EurekaServerApplication.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
6 |
7 | @EnableEurekaServer
8 | @SpringBootApplication
9 | public class EurekaServerApplication {
10 | public static void main(String[] args) {
11 | SpringApplication.run(EurekaServerApplication.class, args);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/frontend/src/components/AddTweetForm/PollIconButton/PollIconButtonStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles, Theme } from "@material-ui/core";
2 |
3 | interface UsePollIconButtonProps {
4 | disabled?: boolean;
5 | }
6 |
7 | export const usePollIconButtonStyles = makeStyles((theme) => ({
8 | quoteImage: {
9 | "& .MuiIconButton-root": {
10 | "& svg": {
11 | color: props => props.disabled ? theme.palette.primary.light : theme.palette.primary.main
12 | }
13 | }
14 | }
15 | }));
16 |
--------------------------------------------------------------------------------
/scheduler-service/src/main/java/com/gmail/merikbest2015/SchedulerServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.openfeign.EnableFeignClients;
6 |
7 | @EnableFeignClients
8 | @SpringBootApplication
9 | public class SchedulerServiceApplication {
10 | public static void main(String[] args) {
11 | SpringApplication.run(SchedulerServiceApplication.class, args);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/tweet-service/src/main/java/com/gmail/merikbest2015/dto/response/NotificationReplyResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.response;
2 |
3 | import com.gmail.merikbest2015.commons.dto.response.tweet.TweetResponse;
4 | import com.gmail.merikbest2015.commons.enums.NotificationType;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Data;
7 |
8 | @Data
9 | @AllArgsConstructor
10 | public class NotificationReplyResponse {
11 | private Long tweetId;
12 | private NotificationType notificationType;
13 | private TweetResponse tweet;
14 | }
15 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/repository/projection/MutedUserProjection.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository.projection;
2 |
3 | import org.springframework.beans.factory.annotation.Value;
4 |
5 | public interface MutedUserProjection {
6 | Long getId();
7 | String getFullName();
8 | String getUsername();
9 | String getAbout();
10 | String getAvatar();
11 | boolean getPrivateProfile();
12 |
13 | @Value("#{@userServiceHelper.isUserMutedByMyProfile(target.id)}")
14 | boolean getIsUserMuted();
15 | }
16 |
--------------------------------------------------------------------------------
/frontend/src/components/AddTweetForm/AddTweetImage/AddDescription/AddDescriptionModal/AddDescriptionModalStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useAddDescriptionModalStyles = makeStyles(() => ({
4 | contentImage: {
5 | display: "flex",
6 | justifyContent: "center",
7 | "& img": {
8 | height: 500
9 | }
10 | },
11 | inputWrapper: {
12 | width: 560,
13 | height: 22,
14 | display: "flex",
15 | justifyContent: "space-between"
16 | }
17 | }));
18 |
--------------------------------------------------------------------------------
/frontend/src/hook/useClickAway.ts:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | interface UseClickAway {
4 | onClickOpen: () => void;
5 | onClickClose: () => void;
6 | open: boolean;
7 | }
8 |
9 | export const useClickAway = (): UseClickAway => {
10 | const [open, setOpen] = React.useState(false);
11 |
12 | const onClickOpen = (): void => {
13 | setOpen((prev) => !prev);
14 | };
15 |
16 | const onClickClose = (): void => {
17 | setOpen(false);
18 | };
19 |
20 | return { open, onClickOpen, onClickClose };
21 | };
22 |
--------------------------------------------------------------------------------
/frontend/src/pages/Messages/ConversationInfo/ReportUserComponent/__tests__/ReportUserComponent.test.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | import { mountWithStore } from "../../../../../util/test-utils/test-helper";
4 | import ReportUserComponent from "../ReportUserComponent";
5 |
6 | describe("ReportUserComponent", () => {
7 | it("should render correctly", () => {
8 | const wrapper = mountWithStore();
9 | expect(wrapper.text().includes("Report @test_username")).toBe(true);
10 | });
11 | });
12 |
--------------------------------------------------------------------------------
/lists-service/src/main/java/com/gmail/merikbest2015/dto/response/PinnedListResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.response;
2 |
3 | import com.fasterxml.jackson.annotation.JsonProperty;
4 | import lombok.Data;
5 |
6 | @Data
7 | public class PinnedListResponse {
8 | private Long id;
9 | private String listName;
10 | private String altWallpaper;
11 | private String wallpaper;
12 |
13 | @JsonProperty("isPrivate")
14 | private boolean isPrivate;
15 |
16 | @JsonProperty("isListPinned")
17 | private boolean isListPinned;
18 | }
19 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/service/UserUpdateTweetCountService.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.service;
2 |
3 | import com.gmail.merikbest2015.commons.event.UpdateTweetCountEvent;
4 |
5 | public interface UserUpdateTweetCountService {
6 |
7 | void handleUpdateTweetCount(UpdateTweetCountEvent tweetCountEvent, String authId);
8 |
9 | void handleUpdateLikeTweetCount(UpdateTweetCountEvent tweetCountEvent, String authId);
10 |
11 | void handleUpdateMediaTweetCount(UpdateTweetCountEvent tweetCountEvent, String authId);
12 | }
13 |
--------------------------------------------------------------------------------
/commons/src/main/java/com/gmail/merikbest2015/commons/event/ListsNotificationEvent.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.commons.event;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | @Data
9 | @Builder
10 | @AllArgsConstructor
11 | @NoArgsConstructor
12 | public class ListsNotificationEvent {
13 | private boolean notificationCondition;
14 | private UserNotificationDto notifiedUser;
15 | private UserNotificationDto user;
16 | private ListsNotificationDto lists;
17 | }
18 |
--------------------------------------------------------------------------------
/frontend/src/pages/Messages/MessagesStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useMessagesStyles = makeStyles((theme) => ({
4 | grid: {
5 | padding: "12px 0px 0px 0px !important"
6 | },
7 | list: {
8 | "& .Mui-selected": {
9 | borderRight: `2px solid ${theme.palette.primary.main}`,
10 | backgroundColor: theme.palette.secondary.dark,
11 | "&:hover": {
12 | backgroundColor: theme.palette.secondary.dark
13 | }
14 | }
15 | }
16 | }));
17 |
--------------------------------------------------------------------------------
/frontend/src/store/ducks/userProfile/contracts/state.ts:
--------------------------------------------------------------------------------
1 | import { UserProfileResponse } from "../../../../types/user";
2 | import { TweetImageResponse } from "../../../../types/tweet";
3 | import { LoadingStatus } from "../../../../types/common";
4 |
5 | export interface UserProfileState {
6 | user: UserProfileResponse | undefined;
7 | images: TweetImageResponse[];
8 | imagesLoadingState: LoadingStatus;
9 | loadingState: LoadingStatus;
10 | }
11 |
12 | export interface ChatParticipantRequest {
13 | participantId: number;
14 | chatId: number;
15 | }
16 |
--------------------------------------------------------------------------------
/lists-service/src/main/java/com/gmail/merikbest2015/dto/response/SimpleListResponse.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.dto.response;
2 |
3 | import com.fasterxml.jackson.annotation.JsonProperty;
4 | import lombok.Data;
5 |
6 | @Data
7 | public class SimpleListResponse {
8 | private Long id;
9 | private String listName;
10 | private String altWallpaper;
11 | private String wallpaper;
12 |
13 | @JsonProperty("isMemberInList")
14 | private boolean isMemberInList;
15 |
16 | @JsonProperty("isPrivate")
17 | private boolean isPrivate;
18 | }
19 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/gmail/merikbest2015/repository/projection/BlockedUserProjection.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015.repository.projection;
2 |
3 | import org.springframework.beans.factory.annotation.Value;
4 |
5 | public interface BlockedUserProjection {
6 | Long getId();
7 | String getFullName();
8 | String getUsername();
9 | String getAbout();
10 | String getAvatar();
11 | boolean getPrivateProfile();
12 |
13 | @Value("#{@userServiceHelper.isUserBlockedByMyProfile(target.id)}")
14 | boolean getIsUserBlocked();
15 | }
16 |
--------------------------------------------------------------------------------
/frontend/src/components/TweetComponent/TweetImage/TweetImageStyles.ts:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useTweetImageStyles = makeStyles((theme) => ({
4 | image: {
5 | position: "relative",
6 | "& img": {
7 | objectFit: "cover",
8 | marginTop: 10,
9 | width: 504,
10 | height: 252,
11 | borderRadius: 20,
12 | borderColor: theme.palette.info.light
13 | },
14 | "& .small": {
15 | width: 260
16 | }
17 | }
18 | }));
19 |
--------------------------------------------------------------------------------
/frontend/src/pages/FullTweet/TweetGif/TweetGif.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC, ReactElement } from "react";
2 | import { useSelector } from "react-redux";
3 |
4 | import { selectTweetGifImage } from "../../../store/ducks/tweet/selectors";
5 | import GifImage from "../../../components/GifImage/GifImage";
6 |
7 | const TweetGif: FC = (): ReactElement | null => {
8 | const gifImage = useSelector(selectTweetGifImage);
9 |
10 | if (!gifImage) {
11 | return null;
12 | }
13 |
14 | return ;
15 | };
16 |
17 | export default TweetGif;
18 |
--------------------------------------------------------------------------------
/frontend/src/pages/Settings/PrivacyAndSafety/YourTweets/LocationInformation/LocationInformationStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useLocationInformationStyles = makeStyles((theme) => ({
4 | deleteLocationInformation: {
5 | textAlign: "center",
6 | padding: 16,
7 | cursor: "pointer",
8 | "& .MuiTypography-body1": {
9 | color: theme.palette.error.main
10 | },
11 | "&:hover": {
12 | backgroundColor: "rgba(244, 33, 46, 0.1)"
13 | }
14 | }
15 | }));
16 |
--------------------------------------------------------------------------------
/frontend/src/pages/UserPage/EditProfileButton/EditProfileModal/EditBirthDate/EditBirthDateModal/EditBirthDateModalStyles.tsx:
--------------------------------------------------------------------------------
1 | import { makeStyles } from "@material-ui/core";
2 |
3 | export const useEditBirthDateModalStyles = makeStyles((theme) => ({
4 | dialog: {
5 | "& .MuiDialogContent-root": {
6 | padding: 32,
7 | width: 320
8 | },
9 | textAlign: "center"
10 | },
11 | text: {
12 | marginTop: 8,
13 | marginBottom: 24
14 | },
15 | editButton: {
16 | marginBottom: 12
17 | }
18 | }));
19 |
--------------------------------------------------------------------------------
/localization-service/src/main/java/com/gmail/merikbest2015/LocalizationServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.openfeign.EnableFeignClients;
6 |
7 | @EnableFeignClients
8 | @SpringBootApplication
9 | public class LocalizationServiceApplication {
10 | public static void main(String[] args) {
11 | SpringApplication.run(LocalizationServiceApplication.class, args);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/notification-service/src/main/java/com/gmail/merikbest2015/NotificationServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.gmail.merikbest2015;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.openfeign.EnableFeignClients;
6 |
7 | @EnableFeignClients
8 | @SpringBootApplication
9 | public class NotificationServiceApplication {
10 | public static void main(String[] args) {
11 | SpringApplication.run(NotificationServiceApplication.class, args);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------