Skip to content

Commit

Permalink
refactor(apps/twitter): life invader pt 1
Browse files Browse the repository at this point in the history
  • Loading branch information
itschip committed Dec 7, 2023
1 parent 7dd5cfa commit f4da25c
Show file tree
Hide file tree
Showing 13 changed files with 121 additions and 99 deletions.
8 changes: 4 additions & 4 deletions apps/phone/src/apps/twitter/components/AddTweetModal.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { memo, useCallback, useState } from 'react';
import { memo, useCallback, useState } from 'react';
import { v4 as uuidv4 } from 'uuid';
import Modal from '../../../ui/components/Modal';
import { IMAGE_DELIMITER } from '../utils/images';
Expand All @@ -16,11 +16,11 @@ import { NewTweet, TwitterEvents } from '@typings/twitter';
import fetchNui from '@utils/fetchNui';
import { ServerPromiseResp } from '@typings/common';
import { useTranslation } from 'react-i18next';
import { promiseTimeout } from '../../../utils/promiseTimeout';
import { promiseTimeout } from '@utils/promiseTimeout';
import { useSnackbar } from '@os/snackbar/hooks/useSnackbar';
import { toggleKeys } from '../../../ui/components/Input';
import { toggleKeys } from '@ui/components';
import { Box, styled } from '@mui/material';
import { useWordFilter } from '../../../os/wordfilter/hooks/useWordFilter';
import { useWordFilter } from '@os/wordfilter/hooks/useWordFilter';

const ButtonsContainer = styled(Box)({
paddingBottom: '8px',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@

import { memo, useState } from 'react';
import { Route, useLocation } from 'react-router-dom';
import { Tweet as ITweet } from '@typings/twitter';
import { AppWrapper } from '@ui/components';
import { AppContent } from '@ui/components/AppContent';
import TweetListContainer from './tweet/TweetListContainer';
import AddTweetModal from './AddTweetModal';
import TweetButton from './buttons/TweetButton';
import TwitterTitle from './TwitterTitle';
import { LifeInvaderTitle } from './LifeInvaderTitle';
import BottomNavigation from './BottomNavigation';
import TwitterProfile from './profile/Profile';
import TwitterSearch from './TwitterSearch';
Expand All @@ -15,15 +15,13 @@ import './twitter.css';
import 'emoji-mart/css/emoji-mart.css';
import { useProfile } from '../hooks/useProfile';
import ProfilePrompt from './profile/ProfilePrompt';
import InjectDebugData from '../../../os/debug/InjectDebugData';
import { TwitterThemeProvider } from '../providers/TwitterThemeProvider';
import { TwitterEvents } from '@typings/twitter';
import { useSetRecoilState } from 'recoil';
import { twitterState } from '../hooks/state';
import ModalBackground from './ModalBackground';
import { WordFilterProvider } from '../../../os/wordfilter/providers/WordFilterProvider';
import { WordFilterProvider } from '@os/wordfilter/providers/WordFilterProvider';

const TwitterApp = () => {
const LifeInvaderApp = () => {
const setModalVisible = useSetRecoilState(twitterState.showCreateTweetModal);
const [activePage, setActivePage] = useState(0);
const { profile } = useProfile();
Expand All @@ -45,7 +43,7 @@ const TwitterApp = () => {
<AddTweetModal />
</WordFilterProvider>
<ModalBackground />
<TwitterTitle />
<LifeInvaderTitle />
<AppContent>
{promptProfileName ? (
<ProfilePrompt />
Expand All @@ -65,7 +63,7 @@ const TwitterApp = () => {
</TwitterThemeProvider>
);
};
export default memo(TwitterApp);
export default memo(LifeInvaderApp);

/*InjectDebugData<any>(
[
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { Suspense } from 'react';
import TwitterApp from './TwitterApp';
import LifeInvaderApp from './LifeInvaderApp';
import { LoadingSpinner } from '@ui/components/LoadingSpinner';

const TwitterContainer = () => {
const LifeInvaderContainer = () => {
return (
<Suspense fallback={<LoadingSpinner />}>
<TwitterApp />
<LifeInvaderApp />
</Suspense>
);
};

export default TwitterContainer;
export default LifeInvaderContainer;
31 changes: 31 additions & 0 deletions apps/phone/src/apps/twitter/components/LifeInvaderTitle.tsx

Large diffs are not rendered by default.

29 changes: 0 additions & 29 deletions apps/phone/src/apps/twitter/components/TwitterTitle.tsx

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,14 @@ import makeStyles from '@mui/styles/makeStyles';
import { Fab } from '@mui/material';
import CreateIcon from '@mui/icons-material/Create';
import { toggleKeys } from '@ui/components';
import { styled } from '@mui/styles';

const useStyles = makeStyles(() => ({
root: {
position: 'absolute',
bottom: '75px',
right: '10px',
},
button: {
background: '#00acee',
},
}));

export function TweetButton({ openModal }) {
Expand All @@ -21,7 +19,6 @@ export function TweetButton({ openModal }) {
return (
<div className={classes.root}>
<Fab
className={classes.button}
color="primary"
onClick={openModal}
onMouseUp={() => {
Expand Down
16 changes: 8 additions & 8 deletions apps/phone/src/apps/twitter/components/twitter.css
Original file line number Diff line number Diff line change
@@ -1,38 +1,38 @@
/* 00acee is "twitter blue" and we want to use that to override
some of the Material UI primary theme settings */

/* override buttons on the tweet modal */
override buttons on the tweet modal
#twitter-app .MuiButton-containedPrimary {
background: #00acee !important;
background: #ff5455 !important;
}

/* override the bottom navigation active color */
#twitter-app .Mui-selected {
color: #00acee !important;
color: #ff5455 !important;
}
/* override the FAB (action buttons) background when selected */
#twitter-app .MuiFab-primary {
background: #00acee !important;
background: #ff5455 !important;
}

/* override the labels on text fields */
#twitter-app .MuiInputLabel-formControl.Mui-focused {
color: #00acee !important;
color: #ff5455 !important;
}

/* override the underlines of text fields */
#twitter-app .Mui-focused:after {
border-bottom-color: #00acee !important;
border-bottom-color: #ff5455 !important;
}

/* override circular progress on the likes button */
#twitter-app .MuiCircularProgress-colorPrimary {
color: #00acee !important;
color: #ff5455 !important;
}

/* override circular progress on the report button */
#twitter-report-progress {
color: #00acee !important;
color: #ff5455 !important;
}

/*
Expand Down
6 changes: 3 additions & 3 deletions apps/phone/src/apps/twitter/twitter.theme.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import { common } from '@mui/material/colors';

export const TWITTER_APP_PRIMARY_COLOR = '#00acee';
export const TWITTER_APP_PRIMARY_COLOR = '#ff5455';
export const TWITTER_APP_TEXT_COLOR = common.white;

const theme = {
palette: {
primary: {
main: TWITTER_APP_PRIMARY_COLOR,
dark: '#0488ba',
light: '#3dbbeb',
dark: '#ff5455',
light: '#ff5455',
contrastText: TWITTER_APP_TEXT_COLOR,
},
secondary: {
Expand Down
32 changes: 16 additions & 16 deletions apps/phone/src/locale/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -118,23 +118,23 @@
"CREATE_PROFILE_FAILURE": "Failed to create your profile",
"EDIT_PROFILE_SUCCESS": "Successfully updated your profile",
"EDIT_PROFILE_FAILURE": "Failed to update your profile",
"CREATE_FAILED": "Failed to send your tweet",
"RETWEET_FAILED": "Failed to retweet this tweet",
"RETWEET_EXISTS": "You have already retweeted this tweet!",
"LIKE_TWEET_FAILED": "Failed to like tweet",
"REPORT_TWEET_SUCCESS": "Successfully reported tweet",
"REPORT_TWEET_FAILED": "Failed to report tweet",
"FETCH_TWEETS_FAILED": "Failed to fetch tweets",
"DELETE_TWEET_FAILED": "Failed to delete tweet",
"FILTER_FETCH_FAILED": "Failed to get filtered tweets"
"CREATE_FAILED": "Failed to send your post",
"RETWEET_FAILED": "Failed to repost",
"RETWEET_EXISTS": "You have already reposted this post",
"LIKE_TWEET_FAILED": "Failed to like post",
"REPORT_TWEET_SUCCESS": "Successfully reported post",
"REPORT_TWEET_FAILED": "Failed to report post",
"FETCH_TWEETS_FAILED": "Failed to fetch post",
"DELETE_TWEET_FAILED": "Failed to delete post",
"FILTER_FETCH_FAILED": "Failed to get filtered posts"
},
"MESSAGES": {
"NEW_RETWEET_BROADCAST": "@{{ profile_name }} retweeted someone!",
"NEW_BROADCAST": "New tweet from @{{ profile_name }}!",
"UNREAD_MESSAGES": "You have {{ count }} new tweets in your timeline!"
"NEW_RETWEET_BROADCAST": "@{{ profile_name }} reposted someone!",
"NEW_BROADCAST": "New post from @{{ profile_name }}!",
"UNREAD_MESSAGES": "You have {{ count }} new posts in your timeline!"
},
"SUBMIT_IMAGE": "Add Media",
"TWEET": "Tweet",
"TWEET": "Post",
"REPORTED": " Reported",
"REPORT": "Report",
"IMAGE_PLACEHOLDER": "Link to image or gif",
Expand All @@ -145,12 +145,12 @@
"EDIT_PROFILE_BIO": "Bio",
"EDIT_PROFILE_LOCATION": "Location",
"EDIT_PROFILE_JOB": "Job",
"RETWEETED": "Retweeted",
"RETWEETED": "Reposted",
"TWEET_MESSAGE_CHAR_LIMIT": "Message is over the character limit",
"TWEET_MESSAGE_NEW_LINE_LIMIT": "Message is over the new line limit",
"TWEET_MESSAGE_PLACEHOLDER": "What's happening?",
"SEARCH_TWEETS_PLACEHOLDER": "Search by profile name or message",
"SEARCH_TWEETS": "Search for tweets",
"SEARCH_TWEETS": "Search for posts",
"TIME_JUST_NOW": "Just now",
"TIME_MINUTES": "m",
"TIME_HOURS": "h",
Expand Down Expand Up @@ -327,7 +327,7 @@
"APPS_BANK": "WhoDis Banking",
"APPS_NOTES": "Notes",
"APPS_EXAMPLE": "Example app",
"APPS_TWITTER": "Twitter",
"APPS_TWITTER": "Life Invader",
"APPS_MARKETPLACE": "Marketplace",
"APPS_CAMERA": "Camera",
"APPS_MATCH": "Matchmaker",
Expand Down
42 changes: 21 additions & 21 deletions apps/phone/src/os/apps/config/apps.tsx
Original file line number Diff line number Diff line change
@@ -1,46 +1,46 @@
import React from 'react';
import { blue, common, grey, purple } from '@mui/material/colors';
import { DialerApp } from '../../../apps/dialer/components/DialerApp';
import { ContactsApp } from '../../../apps/contacts/components/ContactsApp';
import { CalculatorApp } from '../../../apps/calculator/components/CalculatorApp';
import { SettingsApp } from '../../../apps/settings/components/SettingsApp';
import { MessagesApp } from '../../../apps/messages/components/MessagesApp';
import { ExampleAppWrapper } from '../../../apps/example/components/ExampleAppWrapper';
import { MarketplaceApp } from '../../../apps/marketplace/components/MarketplaceApp';
import { NotesApp } from '../../../apps/notes/NotesApp';
import CameraApp from '../../../apps/camera/components/CameraApp';
import { DialerApp } from '@apps/dialer/components/DialerApp';
import { ContactsApp } from '@apps/contacts/components/ContactsApp';
import { CalculatorApp } from '@apps/calculator/components/CalculatorApp';
import { SettingsApp } from '@apps/settings/components/SettingsApp';
import { MessagesApp } from '@apps/messages/components/MessagesApp';
import { ExampleAppWrapper } from '@apps/example/components/ExampleAppWrapper';
import { MarketplaceApp } from '@apps/marketplace/components/MarketplaceApp';
import { NotesApp } from '@apps/notes/NotesApp';
import CameraApp from '@apps/camera/components/CameraApp';
import { AppRoute } from '../components/AppRoute';

import {
MESSAGES_APP_PRIMARY_COLOR,
MESSAGES_APP_TEXT_COLOR,
} from '../../../apps/messages/messages.theme';
} from '@apps/messages/messages.theme';
import {
CONTACTS_APP_PRIMARY_COLOR,
CONTACTS_APP_TEXT_COLOR,
} from '../../../apps/contacts/contacts.theme';
} from '@apps/contacts/contacts.theme';
import {
MARKETPLACE_APP_PRIMARY_COLOR,
MARKETPLACE_APP_ICON_COLOR,
} from '../../../apps/marketplace/marketplace.theme';
import { NOTES_APP_ICON_COLOR, NOTES_APP_PRIMARY_COLOR } from '../../../apps/notes/notes.theme';
import { DIALER_APP_PRIMARY_COLOR, DIALER_APP_TEXT_COLOR } from '../../../apps/dialer/dialer.theme';
} from '@apps/marketplace/marketplace.theme';
import { NOTES_APP_ICON_COLOR, NOTES_APP_PRIMARY_COLOR } from '@apps/notes/notes.theme';
import { DIALER_APP_PRIMARY_COLOR, DIALER_APP_TEXT_COLOR } from '@apps/dialer/dialer.theme';
import {
TWITTER_APP_PRIMARY_COLOR,
TWITTER_APP_TEXT_COLOR,
} from '../../../apps/twitter/twitter.theme';
import { MATCH_APP_PRIMARY_COLOR, MATCH_APP_TEXT_COLOR } from '../../../apps/match/match.theme';
} from '@apps/twitter/twitter.theme';
import { MATCH_APP_PRIMARY_COLOR, MATCH_APP_TEXT_COLOR } from '@apps/match/match.theme';
import { SvgIconProps, Theme } from '@mui/material';
import { INotificationIcon } from '@os/notifications/providers/NotificationsProvider';
import { BrowserApp } from '../../../apps/browser/components/BrowserApp';
import { MatchApp } from '../../../apps/match/components/MatchApp';
import TwitterContainer from '../../../apps/twitter/components/TwitterContainer';
import { BrowserApp } from '@apps/browser/components/BrowserApp';
import { MatchApp } from '@apps/match/components/MatchApp';
import LifeInvaderContainer from '@apps/twitter/components/LifeInvaderContainer';
import { IPhoneSettings } from '@typings/settings';
import { i18n } from 'i18next';
import {
DARKCHAT_APP_PRIMARY_COLOR,
DARKCHAT_APP_TEXT_COLOR,
} from '../../../apps/darkchat/darkchat.theme';
} from '@apps/darkchat/darkchat.theme';
import DarkChatApp from '../../../apps/darkchat/DarkChatApp';

export interface IAppConfig {
Expand Down Expand Up @@ -147,7 +147,7 @@ export const APPS: IAppConfig[] = [
color: TWITTER_APP_TEXT_COLOR,
path: '/twitter',
Route: () => (
<AppRoute id="TWITTER" path="/twitter" component={TwitterContainer} emitOnOpen={false} />
<AppRoute id="TWITTER" path="/twitter" component={LifeInvaderContainer} emitOnOpen={false} />
),
},
{
Expand Down
14 changes: 13 additions & 1 deletion apps/phone/src/os/apps/icons/material/app/TWITTER.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
import React from 'react';
import { Twitter } from '@mui/icons-material';

const TwitterIcon: React.FC = () => <Twitter fontSize="large" />;
const TwitterIcon: React.FC = () => (
<svg width="40" height="40" viewBox="0 0 180 225" fill="none" xmlns="http://www.w3.org/2000/svg"
xlinkHref="http://www.w3.org/1999/xlink">
<rect width="225" height="225" fill="url(#pattern0)" />
<defs>
<pattern id="pattern0" patternContentUnits="objectBoundingBox" width="1" height="1">
<use xlinkHref="#image0_6_17" transform="scale(0.00444444)" />
</pattern>
<image id="image0_6_17" width="225" height="225"
xlinkHref="data:image/png;base64,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" />
</defs>
</svg>
);

export default TwitterIcon;
Loading

0 comments on commit f4da25c

Please sign in to comment.