From bada2686df385f04318bc7afb02d5dac80d2f417 Mon Sep 17 00:00:00 2001 From: tnfAngel <57068341+tnfAngel@users.noreply.github.com> Date: Fri, 10 May 2024 08:13:09 +0100 Subject: [PATCH 1/3] bump deps --- bun.lockb | Bin 299988 -> 300580 bytes package.json | 104 +++++++++++++++++++++++++-------------------------- 2 files changed, 52 insertions(+), 52 deletions(-) diff --git a/bun.lockb b/bun.lockb index 94248581effd8624c52dcd308b97e218e7087ac9..ed3cd9a4b23d1f13a92b5c7d6b9a8ab252d4d518 100755 GIT binary patch delta 62946 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

*`=t+wpF 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 delta 62975 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 diff --git a/package.json b/package.json index 636d694..6a3a92e 100644 --- a/package.json +++ b/package.json @@ -1,54 +1,54 @@ { - "$schema": "https://json.schemastore.org/package.json", - "type": "module", - "name": "@tnfangel-chat/web-app", - "version": "0.1.0", - "private": true, - "scripts": { - "build": "bun next build", - "dev": "bun next dev", - "lint": "bun run lint:biome && bun run lint:tsc", - "lint:biome": "bun biome check --apply .", - "lint:tsc": "bun tsc --noEmit", - "prod": "bun run build && bun run start", - "start": "bun next start" - }, - "dependencies": { - "@chakra-ui/icons": "^2.1.1", - "@chakra-ui/next-js": "^2.2.0", - "@chakra-ui/react": "^2.8.2", - "@chakra-ui/system": "^2.6.2", - "@discordjs/collection": "^2.0.0", - "@fontsource/inter": "^5.0.17", - "@reduxjs/toolkit": "^2.2.3", - "framer-motion": "^11.1.3", - "ky": "^1.2.3", - "million": "^3.0.6", - "next": "14.2.1", - "react": "18.2.0", - "react-device-detect": "^2.2.3", - "react-dom": "18.2.0", - "react-easy-emoji": "^1.8.1", - "react-icons": "^5.1.0", - "react-intersection-observer": "^9.8.2", - "react-redux": "^9.1.1", - "sharp": "^0.33.3", - "socket.io-client": "^4.7.5", - "swr": "^2.2.5", - "twemoji": "^14.0.2", - "typescript": "5.4.5", - "use-file-picker": "^2.1.1" - }, - "devDependencies": { - "@biomejs/biome": "^1.7.0", - "@types/bun": "^1.1.0", - "@types/react": "18.2.79", - "@types/react-dom": "18.2.25", - "eslint": "9.0.0", - "eslint-config-next": "14.2.1" - }, - "packageManager": "bun@1.1.3", - "trustedDependencies": [ - "@biomejs/biome" - ] + "$schema": "https://json.schemastore.org/package.json", + "type": "module", + "name": "@tnfangel-chat/web-app", + "version": "0.1.0", + "private": true, + "scripts": { + "build": "bun next build", + "dev": "bun next dev", + "lint": "bun run lint:biome && bun run lint:tsc", + "lint:biome": "bun biome check --apply .", + "lint:tsc": "bun tsc --noEmit", + "prod": "bun run build && bun run start", + "start": "bun next start" + }, + "dependencies": { + "@chakra-ui/icons": "^2.1.1", + "@chakra-ui/next-js": "^2.2.0", + "@chakra-ui/react": "^2.8.2", + "@chakra-ui/system": "^2.6.2", + "@discordjs/collection": "^2.1.0", + "@fontsource/inter": "^5.0.18", + "@reduxjs/toolkit": "^2.2.4", + "framer-motion": "^11.1.9", + "ky": "^1.2.4", + "million": "^3.0.6", + "next": "14.2.3", + "react": "18.3.1", + "react-device-detect": "^2.2.3", + "react-dom": "18.3.1", + "react-easy-emoji": "^1.8.1", + "react-icons": "^5.2.1", + "react-intersection-observer": "^9.10.2", + "react-redux": "^9.1.2", + "sharp": "^0.33.3", + "socket.io-client": "^4.7.5", + "swr": "^2.2.5", + "twemoji": "^14.0.2", + "typescript": "5.4.5", + "use-file-picker": "^2.1.2" + }, + "devDependencies": { + "@biomejs/biome": "^1.7.3", + "@types/bun": "^1.1.1", + "@types/react": "18.3.1", + "@types/react-dom": "18.3.0", + "eslint": "9.2.0", + "eslint-config-next": "14.2.3" + }, + "packageManager": "bun@1.1.3", + "trustedDependencies": [ + "@biomejs/biome" + ] } From 9240de885051a9f00a79a955c619c95834abec0b Mon Sep 17 00:00:00 2001 From: tnfAngel <57068341+tnfAngel@users.noreply.github.com> Date: Fri, 10 May 2024 09:03:50 +0100 Subject: [PATCH 2/3] new loading screen --- public/logo-nobg.svg | 81 +++++++++++++++++++++ src/components/general/AppSocket.tsx | 1 + src/components/layout/UsersSidebar.tsx | 6 +- src/components/misc/EmojiText.tsx | 4 +- src/components/screens/AppLoadingScreen.tsx | 28 ++++--- src/constants/themes.ts | 2 +- 6 files changed, 106 insertions(+), 16 deletions(-) create mode 100644 public/logo-nobg.svg diff --git a/public/logo-nobg.svg b/public/logo-nobg.svg new file mode 100644 index 0000000..4ba1a26 --- /dev/null +++ b/public/logo-nobg.svg @@ -0,0 +1,81 @@ + + + + diff --git a/src/components/general/AppSocket.tsx b/src/components/general/AppSocket.tsx index c768428..522f186 100644 --- a/src/components/general/AppSocket.tsx +++ b/src/components/general/AppSocket.tsx @@ -81,6 +81,7 @@ export default function AppSocket({ children, onConnectionReady }: any) { dispatch(setChannels(channels.map((channel) => normalizeChannel(channel)))); setTheme(preferences.theme); + onConnectionReady(); } diff --git a/src/components/layout/UsersSidebar.tsx b/src/components/layout/UsersSidebar.tsx index 08a476c..98a015c 100644 --- a/src/components/layout/UsersSidebar.tsx +++ b/src/components/layout/UsersSidebar.tsx @@ -69,7 +69,7 @@ export function StatusSection({ label }: Readonly<{ label: string }>) { return (

- + {label}
@@ -84,7 +84,7 @@ export type UsersSidebarContentProps = { users: IUser[]; }; -export function UsersSidebarContent({ users }: UsersSidebarContentProps) { +export function UsersSidebarContent({ users }: Readonly) { const { isOpen, onOpen, onClose } = useDisclosure(); const [clickedUser, setClickedUser] = useState(); const onlineUsers: IUser[] = []; @@ -138,7 +138,7 @@ export type UsersSidebarProps = { userSidebarRef?: any; }; -export default function UsersSidebar({ users, userSidebarRef }: UsersSidebarProps) { +export default function UsersSidebar({ users, userSidebarRef }: Readonly) { const { getColorValue } = useThemeColors(); return ( diff --git a/src/components/misc/EmojiText.tsx b/src/components/misc/EmojiText.tsx index 602e59b..6edefee 100644 --- a/src/components/misc/EmojiText.tsx +++ b/src/components/misc/EmojiText.tsx @@ -6,11 +6,11 @@ export default function TextEmoji({ children, size, ...props -}: { +}: Readonly<{ children: string | string[]; size: number; [props: string]: any; -}) { +}>) { return ( {emoji(children, (code, string, offset) => { diff --git a/src/components/screens/AppLoadingScreen.tsx b/src/components/screens/AppLoadingScreen.tsx index 4b8ce4c..941b9d3 100644 --- a/src/components/screens/AppLoadingScreen.tsx +++ b/src/components/screens/AppLoadingScreen.tsx @@ -1,7 +1,8 @@ 'use client'; import useThemeColors from '@/hooks/useThemeColors'; -import { Box, Center } from '@chakra-ui/react'; +import { Box, Center, Flex } from '@chakra-ui/react'; +import { motion } from 'framer-motion'; import Image from 'next/image'; export default function LoadingScreen() { @@ -9,15 +10,22 @@ export default function LoadingScreen() { return ( -
- tnfAngel Chat +
+ + tnfAngel Chat + +
); diff --git a/src/constants/themes.ts b/src/constants/themes.ts index d171418..668b634 100644 --- a/src/constants/themes.ts +++ b/src/constants/themes.ts @@ -37,7 +37,7 @@ export const themes: Theme[] = [ name: 'Dark', baseTheme: 'dark', colors: { - appBackground: '#333333', + appBackground: '#222222', ternaryBackground: '#272727', sidebarBackground: '#2E2E2E', modalBackground: '#2E2E2E', From d27e53e4fe740515734a102bca67e0175384c52f Mon Sep 17 00:00:00 2001 From: tnfAngel <57068341+tnfAngel@users.noreply.github.com> Date: Fri, 10 May 2024 09:40:05 +0100 Subject: [PATCH 3/3] connection status bar & loading screen & slice --- src/app/channels/[channelId]/page.tsx | 7 +- src/app/friends/page.tsx | 7 +- src/app/guilds/[guildId]/[channelId]/page.tsx | 7 +- src/app/guilds/[guildId]/page.tsx | 7 +- src/app/layout.tsx | 12 +++- src/components/general/AppSocket.tsx | 37 ++--------- src/components/general/ConnectionStatus.tsx | 65 +++++++++++++++++++ src/components/screens/AppLoadingScreen.tsx | 7 +- src/components/screens/ChannelScreen.tsx | 2 - src/store/index.ts | 2 + src/store/slices/connectionSlice.ts | 32 +++++++++ 11 files changed, 123 insertions(+), 62 deletions(-) create mode 100644 src/components/general/ConnectionStatus.tsx create mode 100644 src/store/slices/connectionSlice.ts diff --git a/src/app/channels/[channelId]/page.tsx b/src/app/channels/[channelId]/page.tsx index cfaffd1..b0787ab 100644 --- a/src/app/channels/[channelId]/page.tsx +++ b/src/app/channels/[channelId]/page.tsx @@ -2,7 +2,6 @@ import ChannelScreen from '@/components/screens/ChannelScreen'; import { setActivePage, setSelectedChannel } from '@/store/slices/selectionsSlice'; -import { Flex } from '@chakra-ui/react'; import { useDispatch } from 'react-redux'; export default function SelectedChannelPage({ @@ -17,9 +16,5 @@ export default function SelectedChannelPage({ dispatch(setSelectedChannel({ channelId })); dispatch(setActivePage('direct')); - return ( - - - - ); + return ; } diff --git a/src/app/friends/page.tsx b/src/app/friends/page.tsx index f72b049..8e2b271 100644 --- a/src/app/friends/page.tsx +++ b/src/app/friends/page.tsx @@ -2,7 +2,6 @@ import FriendsScreen from '@/components/screens/FriendsScreen'; import { setActivePage } from '@/store/slices/selectionsSlice'; -import { Flex } from '@chakra-ui/react'; import { useDispatch } from 'react-redux'; export default function FriendsPage() { @@ -10,9 +9,5 @@ export default function FriendsPage() { dispatch(setActivePage('direct')); - return ( - - - - ); + return ; } diff --git a/src/app/guilds/[guildId]/[channelId]/page.tsx b/src/app/guilds/[guildId]/[channelId]/page.tsx index f6f0433..793bdf4 100644 --- a/src/app/guilds/[guildId]/[channelId]/page.tsx +++ b/src/app/guilds/[guildId]/[channelId]/page.tsx @@ -2,7 +2,6 @@ import GuildChannelScreen from '@/components/screens/GuildChannelScreen'; import { setActivePage, setSelectedChannel, setSelectedGuild } from '@/store/slices/selectionsSlice'; -import { Flex } from '@chakra-ui/react'; import { useDispatch } from 'react-redux'; export default function SelectedGuildChannelPage({ @@ -18,9 +17,5 @@ export default function SelectedGuildChannelPage({ dispatch(setSelectedGuild({ guildId })); dispatch(setActivePage('guild')); - return ( - - - - ); + return ; } diff --git a/src/app/guilds/[guildId]/page.tsx b/src/app/guilds/[guildId]/page.tsx index 59a893a..88e356d 100644 --- a/src/app/guilds/[guildId]/page.tsx +++ b/src/app/guilds/[guildId]/page.tsx @@ -2,7 +2,6 @@ import GuildScreen from '@/components/screens/GuildScreen'; import { setActivePage, setSelectedGuild } from '@/store/slices/selectionsSlice'; -import { Flex } from '@chakra-ui/react'; import { useDispatch } from 'react-redux'; export default function SelectedGuildPage({ @@ -17,9 +16,5 @@ export default function SelectedGuildPage({ dispatch(setActivePage('guild')); dispatch(setSelectedGuild({ guildId })); - return ( - - - - ); + return ; } diff --git a/src/app/layout.tsx b/src/app/layout.tsx index c89b4cd..59cf091 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -2,11 +2,12 @@ import AppWrapper from '@/components/general/AppWrapper'; import { CacheProvider } from '@chakra-ui/next-js'; -import { ChakraProvider, ColorModeScript, extendTheme } from '@chakra-ui/react'; +import { Box, ChakraProvider, ColorModeScript, Flex, extendTheme } from '@chakra-ui/react'; import { Provider } from 'react-redux'; import { SWRConfig } from 'swr'; import { store } from '../store'; import '../styles/global.css'; +import ConnectionStatus from '@/components/general/ConnectionStatus'; const config = { initialColorMode: 'dark', @@ -38,7 +39,14 @@ export default function RootLayout({ fetcher: (resource, init) => fetch(resource, init).then((res) => res.json()) }} > - {children} + + + + + {children} + + + diff --git a/src/components/general/AppSocket.tsx b/src/components/general/AppSocket.tsx index 522f186..b4c76f1 100644 --- a/src/components/general/AppSocket.tsx +++ b/src/components/general/AppSocket.tsx @@ -2,6 +2,7 @@ import { client } from '@/client'; import useTheme from '@/hooks/useTheme'; import { modifyChannel, setChannels } from '@/store/slices/channelsSlice'; import { addMessage } from '@/store/slices/chatsSlice'; +import { setConnected } from '@/store/slices/connectionSlice'; import { setGuilds } from '@/store/slices/guildsSlice'; import type { IRawChannel } from '@/types/interfaces/Channel'; import type { IRawGuild } from '@/types/interfaces/Guild'; @@ -10,54 +11,26 @@ import type { IRawUser } from '@/types/interfaces/User'; import normalizeChannel from '@/util/normalizeChannel'; import normalizeGuild from '@/util/normalizeGuild'; import normalizeMessage from '@/util/normalizeMessage'; -import { useToast } from '@chakra-ui/react'; -import { useEffect, useState } from 'react'; +import { useEffect } from 'react'; import { useDispatch } from 'react-redux'; interface IUserPreferences { theme: string; } -let isReconnection = false; - export default function AppSocket({ children, onConnectionReady }: any) { const [_theme, setTheme] = useTheme(); - const [_isConnected, setIsConnected] = useState(false); const dispatch = useDispatch(); - const toast = useToast(); useEffect(() => { const socket = client.socket.connect(); function onConnect() { - setIsConnected(true); - - toast.closeAll(); - - setTimeout(() => { - if (isReconnection) { - toast({ - title: 'Back online', - description: 'You are connected to chat again.', - status: 'success', - position: 'top-right', - duration: 5000, - isClosable: true - }); - } - }, 500); + dispatch(setConnected(true)); } function onDisconnect() { - setIsConnected(false); - toast({ - title: 'Disconnected', - description: 'You have been disconnected from chat.', - status: 'error', - position: 'top-right', - duration: null - }); - isReconnection = true; + dispatch(setConnected(false)); } function onReady({ @@ -81,7 +54,7 @@ export default function AppSocket({ children, onConnectionReady }: any) { dispatch(setChannels(channels.map((channel) => normalizeChannel(channel)))); setTheme(preferences.theme); - + onConnectionReady(); } diff --git a/src/components/general/ConnectionStatus.tsx b/src/components/general/ConnectionStatus.tsx new file mode 100644 index 0000000..c996839 --- /dev/null +++ b/src/components/general/ConnectionStatus.tsx @@ -0,0 +1,65 @@ +import useThemeColors from '@/hooks/useThemeColors'; +import type { RootState } from '@/store'; +import { Center, Flex, Text } from '@chakra-ui/react'; +import { AnimatePresence, motion } from 'framer-motion'; +import { useEffect, useState } from 'react'; +import { + MdSignalWifiStatusbar4Bar, + MdSignalWifiStatusbar1Bar, + MdSignalWifiStatusbar2Bar, + MdSignalWifiStatusbar3Bar +} from 'react-icons/md'; +import { useSelector } from 'react-redux'; + +export default function ConnectionStatus() { + const { getColorValue } = useThemeColors(); + + const { isConnected } = useSelector((state: RootState) => state.connection); + + const statusFontSize = '20px'; + const statusSignalColor = '#ffa500'; + const [statusIndex, setStatusIndex] = useState(0); + + const statusSignals = [ + , + , + , + + ]; + + useEffect(() => { + let animationTimeout: Timer; + + if (!isConnected) { + animationTimeout = setTimeout(() => { + const newIndex = statusIndex + 1; + + setStatusIndex(newIndex === statusSignals.length ? 0 : newIndex); + }, 300); + } else if (statusIndex !== 0) { + setStatusIndex(0); + } + + return () => clearTimeout(animationTimeout); + }, [statusIndex, isConnected]); + + return ( + + {!isConnected && ( +
+ + {statusSignals[statusIndex]} + Connecting... + +
+ )} +
+ ); +} diff --git a/src/components/screens/AppLoadingScreen.tsx b/src/components/screens/AppLoadingScreen.tsx index 941b9d3..97fde6f 100644 --- a/src/components/screens/AppLoadingScreen.tsx +++ b/src/components/screens/AppLoadingScreen.tsx @@ -19,10 +19,13 @@ export default function LoadingScreen() { background='#FF0067' borderRadius='2px' initial={{ - width: '0%' + width: '0%', + opacity: 1 }} animate={{ - width: '100%' + width: '100%', + opacity: [1, 1, 1, 0], + transition: { repeat: Infinity, duration: 1 } }} /> diff --git a/src/components/screens/ChannelScreen.tsx b/src/components/screens/ChannelScreen.tsx index d654b6d..7835ce4 100644 --- a/src/components/screens/ChannelScreen.tsx +++ b/src/components/screens/ChannelScreen.tsx @@ -41,8 +41,6 @@ export default function ChannelScreen() { router.prefetch('/friends'); router.push('/friends'); - console.log('Going to friends...'); - return ; } diff --git a/src/store/index.ts b/src/store/index.ts index e10458c..dab5af5 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -7,6 +7,7 @@ import guildsSlice from './slices/guildsSlice'; import recentEmojisSlice from './slices/recentEmojisSlice'; import selectionsSlice from './slices/selectionsSlice'; import themesSlice from './slices/themeSlice'; +import connectionSlice from './slices/connectionSlice'; export const store = configureStore({ reducer: { @@ -14,6 +15,7 @@ export const store = configureStore({ themes: themesSlice, recentEmojis: recentEmojisSlice, collapsibles: collapsiblesSlice, + connection: connectionSlice, guilds: guildsSlice, channels: channelsSlice, selections: selectionsSlice diff --git a/src/store/slices/connectionSlice.ts b/src/store/slices/connectionSlice.ts new file mode 100644 index 0000000..b78d13a --- /dev/null +++ b/src/store/slices/connectionSlice.ts @@ -0,0 +1,32 @@ +import { createSlice } from '@reduxjs/toolkit'; + +export type ConnectionState = { + isConnected: boolean; +}; + +const initialState: ConnectionState = { + isConnected: false +}; + +export const connectionSlice = createSlice({ + name: 'connection', + initialState, + reducers: { + setConnected: ( + state, + { + payload + }: { + type: string; + payload: boolean; + } + ) => { + state.isConnected = payload; + + return state; + } + } +}); + +export const { setConnected } = connectionSlice.actions; +export default connectionSlice.reducer;