From 94df141d06153c6846993b5f3a6c5e2d40e6fb95 Mon Sep 17 00:00:00 2001 From: Djalim Simaila Date: Thu, 4 Apr 2024 13:02:12 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20refactor(gitignore):=20add=20and?= =?UTF-8?q?roid/=20to=20.gitignore=20to=20prevent=20tracking=20of=20Androi?= =?UTF-8?q?d=20build=20files=20=F0=9F=94=A7=20refactor(App.tsx):=20import?= =?UTF-8?q?=20AppRegistry,=20Platform=20from=20react-native=20for=20better?= =?UTF-8?q?=20platform=20detection=20=F0=9F=94=A7=20refactor(App.tsx):=20i?= =?UTF-8?q?mport=20persistor=20from=20redux=20store=20to=20persist=20redux?= =?UTF-8?q?=20state=20=F0=9F=94=A7=20refactor(App.tsx):=20wrap=20app=20in?= =?UTF-8?q?=20PersistGate=20to=20persist=20and=20rehydrate=20a=20redux=20s?= =?UTF-8?q?tore=20=F0=9F=94=A7=20refactor(App.tsx):=20change=20initial=20t?= =?UTF-8?q?oken=20state=20to=20use=20token=20from=20redux=20store=20?= =?UTF-8?q?=F0=9F=94=A7=20refactor(app.json):=20add=20package=20name=20to?= =?UTF-8?q?=20app.json=20for=20unique=20app=20identification=20?= =?UTF-8?q?=F0=9F=94=A7=20refactor(package.json):=20change=20android=20and?= =?UTF-8?q?=20ios=20scripts=20to=20use=20expo=20run:android=20and=20expo?= =?UTF-8?q?=20run:ios=20=F0=9F=94=A7=20refactor(package.json):=20add=20rea?= =?UTF-8?q?ct-native-android-notification-listener=20and=20react-native-pa?= =?UTF-8?q?ger-view=20dependencies=20=F0=9F=94=A7=20refactor(package.json)?= =?UTF-8?q?:=20add=20redux-persist-expo-filesystem=20for=20redux=20state?= =?UTF-8?q?=20persistence=20=F0=9F=94=A7=20refactor(ClipElementLocal.tsx):?= =?UTF-8?q?=20remove=20unnecessary=20whitespace=20=F0=9F=94=A7=20refactor(?= =?UTF-8?q?ClipList.tsx):=20replace=20ScrollView=20with=20FlatList=20for?= =?UTF-8?q?=20better=20performance=20=F0=9F=94=A7=20refactor(ClipList.tsx)?= =?UTF-8?q?:=20use=20nanoid=20for=20unique=20key=20generation=20in=20FlatL?= =?UTF-8?q?ist=20=F0=9F=94=A7=20refactor(ClipView.tsx):=20add=20Button=20f?= =?UTF-8?q?or=20compact=20layout=20=F0=9F=94=A7=20refactor(ClipView.tsx):?= =?UTF-8?q?=20adjust=20Searchbar=20style=20for=20better=20layout=20?= =?UTF-8?q?=F0=9F=94=A7=20refactor(ClipViewLocal.tsx):=20use=20localClipAd?= =?UTF-8?q?dToList=20action=20for=20adding=20to=20local=20clip=20list=20?= =?UTF-8?q?=F0=9F=94=A7=20refactor(ClipViewLocal.tsx):=20set=20initial=20c?= =?UTF-8?q?lips=20state=20to=20use=20localClip=20from=20redux=20store=20?= =?UTF-8?q?=F0=9F=94=A7=20refactor(ClipViewRemote.tsx):=20use=20remoteClip?= =?UTF-8?q?AddToList=20action=20for=20adding=20to=20remote=20clip=20list?= =?UTF-8?q?=20=F0=9F=94=A7=20refactor(ClipViewRemote.tsx):=20set=20initial?= =?UTF-8?q?=20clips=20state=20to=20use=20remoteClip=20from=20redux=20store?= =?UTF-8?q?=20=F0=9F=94=A7=20refactor(Clips.tsx):=20add=20signout=20functi?= =?UTF-8?q?on=20to=20clear=20all=20redux=20states=20on=20signout=20?= =?UTF-8?q?=F0=9F=94=A7=20refactor(Clips.tsx):=20add=20Notifications=20to?= =?UTF-8?q?=20Drawer=20=F0=9F=94=A7=20refactor(Clips.tsx):=20replace=20Cli?= =?UTF-8?q?pView=20with=20NotifView=20for=20notif=20active=20state=20?= =?UTF-8?q?=F0=9F=94=A7=20refactor(reducers.tsx):=20rename=20localAddToLis?= =?UTF-8?q?t=20to=20localClipAddToList=20for=20better=20semantics=20?= =?UTF-8?q?=F0=9F=94=A7=20refactor(reducers.tsx):=20rename=20remoteAddToLi?= =?UTF-8?q?st=20to=20remoteClipAddToList=20for=20better=20semantics=20?= =?UTF-8?q?=F0=9F=94=A7=20refactor(reducers.tsx):=20add=20localNotifsSlice?= =?UTF-8?q?=20and=20remoteNotifsSlice=20for=20handling=20local=20and=20rem?= =?UTF-8?q?ote=20notifications?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + App.tsx | 15 ++++-- app.json | 3 +- bun.lockb | Bin 378729 -> 379710 bytes package.json | 7 ++- src/components/clip/ClipElementLocal.tsx | 2 +- src/components/clip/ClipList.tsx | 47 ++++++----------- src/components/clip/ClipView.tsx | 15 ++++-- src/components/clip/ClipViewLocal.tsx | 14 ++--- src/components/clip/ClipViewRemote.tsx | 16 +++--- src/pages/Clips.tsx | 45 ++++++++++++---- src/redux/reducers.tsx | 63 +++++++++++++++++++---- src/redux/store.tsx | 22 ++++++-- 13 files changed, 167 insertions(+), 83 deletions(-) diff --git a/.gitignore b/.gitignore index c131846..e881539 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ ios/.xcode.env.local # Android/IntelliJ # +android/ build/ .idea .gradle diff --git a/App.tsx b/App.tsx index a6c4a21..c315dbf 100644 --- a/App.tsx +++ b/App.tsx @@ -1,11 +1,14 @@ import 'react-native-gesture-handler'; // ^ le bouge pas ca casse tout ^ +import { AppRegistry, Platform } from 'react-native' + + import { useState } from "react"; import { NavigationContainer, DefaultTheme } from '@react-navigation/native'; import { createNativeStackNavigator } from '@react-navigation/native-stack'; import { Provider } from 'react-redux'; -import { store } from './src/redux/store'; -import { MD3DarkTheme, MD3LightTheme, PaperProvider, Portal } from 'react-native-paper'; +import { store,persistor } from './src/redux/store'; +import { PaperProvider } from 'react-native-paper'; import { ToastProvider } from 'react-native-toast-notifications' import AuthPage from './src/pages/Auth'; import ClipPage from './src/pages/Clips'; @@ -15,11 +18,11 @@ import { Material3Dracula, ReactNavigationDracula } from './src/themes'; import { PixelRatio, useWindowDimensions } from 'react-native'; import { SafeAreaProvider } from 'react-native-safe-area-context'; const Stack = createNativeStackNavigator(); - +import { PersistGate } from 'redux-persist/integration/react'; function App(){ - const [token,setToken] = useState(""); + const [token,setToken] = useState(store.getState().user.token); const [username,setUsername] = useState(""); const {height,width} = useWindowDimensions(); @@ -30,11 +33,12 @@ function App(){ let newToken = store.getState().user.token; setToken(newToken); }) - + return ( + @@ -54,6 +58,7 @@ function App(){ + diff --git a/app.json b/app.json index c10b0dd..0fd01a3 100644 --- a/app.json +++ b/app.json @@ -21,7 +21,8 @@ "adaptiveIcon": { "foregroundImage": "./assets/adaptive-icon.png", "backgroundColor": "#ffffff" - } + }, + "package": "fr.simailadjalim.ClipSync" }, "web": { "favicon": "./assets/favicon.png" diff --git a/bun.lockb b/bun.lockb index c94b7abacda6f1f39001da150f1f788446e21304..37b0f503975926ee6921b8ca7bd4be03951e5154 100755 GIT binary patch delta 81144 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 Yd#eAtSk30dVc_k&la9*UGqgYaA5>g{G5`Po delta 80065 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 diff --git a/package.json b/package.json index 1d6bcc4..10798e9 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,8 @@ "main": "node_modules/expo/AppEntry.js", "scripts": { "start": "expo start", - "android": "expo start --android", - "ios": "expo start --ios", + "android": "expo run:android", + "ios": "expo run:ios", "web": "expo start --web" }, "dependencies": { @@ -22,9 +22,11 @@ "expo-status-bar": "~1.11.1", "react": "18.2.0", "react-native": "0.73.6", + "react-native-android-notification-listener": "^5.0.1", "react-native-async-storage": "^0.0.1", "react-native-drawer-layout": "^3.3.0", "react-native-gesture-handler": "~2.14.0", + "react-native-pager-view": "^6.3.0", "react-native-paper": "^5.12.3", "react-native-reanimated": "~3.6.2", "react-native-safe-area-context": "^4.9.0", @@ -38,6 +40,7 @@ "react-redux": "^9.1.0", "redux": "^5.0.1", "redux-persist": "^6.0.0", + "redux-persist-expo-filesystem": "^2.0.1", "redux-thunk": "^3.1.0" }, "devDependencies": { diff --git a/src/components/clip/ClipElementLocal.tsx b/src/components/clip/ClipElementLocal.tsx index a9fe410..b16af74 100644 --- a/src/components/clip/ClipElementLocal.tsx +++ b/src/components/clip/ClipElementLocal.tsx @@ -8,7 +8,7 @@ import { store } from '../../redux/store'; import { Button } from 'react-native-paper'; export default function ClipElementLocal({content}:{content: string}){ - + const toast = useToast(); function onCopy() { Clipboard.setStringAsync(content) diff --git a/src/components/clip/ClipList.tsx b/src/components/clip/ClipList.tsx index 0af4df6..a687630 100644 --- a/src/components/clip/ClipList.tsx +++ b/src/components/clip/ClipList.tsx @@ -1,46 +1,31 @@ import React from 'react'; -import {ScrollView} from 'react-native'; +import {FlatList, ScrollView} from 'react-native'; import ClipElementLocal from './ClipElementLocal'; import ClipElementRemote from './ClipElementRemote'; +import { nanoid } from '@reduxjs/toolkit'; export default class ClipList extends React.Component { constructor(props: any) { super(props); } - createClipElementLocal(content: string): JSX.Element { - return ; - } - - createClipElementRemote( - content: string, - deviceName: string, - timestamp: number, - ): JSX.Element { - return ( - - ); - } - render(): JSX.Element { - let clips; if (this.props.type === 'local') { - clips = this.props.clips.map((entry: any) => - this.createClipElementLocal(entry.content), - ); + return } + keyExtractor={item => nanoid()} + inverted={true} + /> } else { - clips = this.props.clips.map((entry: any) => - this.createClipElementRemote( - entry.content, - entry.device_name, - entry.timestamp, - ), - ); + return } + keyExtractor={item => nanoid()} + inverted={true} + /> + ; } - return {clips}; + } } diff --git a/src/components/clip/ClipView.tsx b/src/components/clip/ClipView.tsx index 4074683..66768bc 100644 --- a/src/components/clip/ClipView.tsx +++ b/src/components/clip/ClipView.tsx @@ -1,6 +1,6 @@ import React from "react"; -import { useWindowDimensions, ScrollView } from "react-native"; -import { Searchbar } from "react-native-paper" +import { useWindowDimensions, ScrollView, View } from "react-native"; +import { Searchbar, Button } from "react-native-paper" import ClipViewLocal from "./ClipViewLocal"; import ClipViewRemote from "./ClipViewRemote"; import { ps } from "../../utils"; @@ -18,12 +18,19 @@ export default function ClipView(){ else if (width < 1200 ) layout = "medium"; else layout = "expanded"; return ( <> - - + {layout == "compact" ? + - } - async function addToLocal(dispatch) { Clipboard.getStringAsync() .then(value =>{ let newClip = {"content":value}; console.log(value); - dispatch(localAddToList(newClip)); + dispatch(localClipAddToList(newClip)); setClips([...clips,newClip]); toast.show('copied "'+value+'" into history'); }) diff --git a/src/components/clip/ClipViewRemote.tsx b/src/components/clip/ClipViewRemote.tsx index 809b9d0..61357fb 100644 --- a/src/components/clip/ClipViewRemote.tsx +++ b/src/components/clip/ClipViewRemote.tsx @@ -6,18 +6,22 @@ import { store } from '../../redux/store'; import { useToast } from 'react-native-toast-notifications'; import { Button } from 'react-native-paper'; import { ps } from '../../utils'; +import { useDispatch } from 'react-redux'; +import { remoteClipAddToList } from '../../redux/reducers'; export default function ClipViewRemote(){ - const [clips,setClips] = React.useState([]); + const [clips,setClips] = React.useState(store.getState().remoteClip.remoteClip); const toast = useToast(); - + const dispatch = useDispatch(); + const {height,width} = useWindowDimensions(); - function getClips() { + async function getClips(dispatch) { axios.get("http://notifysync.simailadjalim.fr/clipboard?token="+store.getState().user.token) .then((response,status) => { - console.log(response); - setClips(Object.values(response["data"]['clipboard'])); + let remoteclips = Object.values(response["data"]['clipboard']); + setClips(remoteclips); + dispatch(remoteClipAddToList(remoteclips)) toast.show("fetched latest clips from remote"); }) .catch(response =>{ @@ -37,7 +41,7 @@ export default function ClipViewRemote(){ flex:1, margin: width > 600 ? ps(10) : 0 }}> - diff --git a/src/pages/Clips.tsx b/src/pages/Clips.tsx index 3a89ace..ba4b441 100644 --- a/src/pages/Clips.tsx +++ b/src/pages/Clips.tsx @@ -1,15 +1,14 @@ import React from "react"; import { Drawer as DrawerLayout } from 'react-native-drawer-layout'; -import { Button, Drawer, Searchbar } from 'react-native-paper'; -import { Platform, View,StyleSheet, useWindowDimensions, ScrollView } from "react-native"; -import { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs'; -import { Appbar, Modal, Text, Portal } from 'react-native-paper'; +import { Button, Drawer} from 'react-native-paper'; +import { Platform, View,StyleSheet, useWindowDimensions } from "react-native"; +import { Modal, Text, Portal } from 'react-native-paper'; import { useDispatch } from 'react-redux'; -import { disconnect } from "../redux/reducers"; -import { ps } from "../utils"; +import { disconnect, localClipClear, localNotifClear, remoteClipClear, remoteNotifClear } from "../redux/reducers"; import { ReactNavigationDracula as t } from "../themes"; import ClipView from "../components/clip/ClipView"; import Settings from "./Settings"; +import NotifView from "../components/notif/NotifView"; const styles = StyleSheet.create({ modal: { @@ -31,6 +30,15 @@ export default function ClipPage(){ const containerStyle = {backgroundColor: 'white', padding: 20}; const {height, width} = useWindowDimensions(); + + function signout(){ + dispatch(localClipClear()) + dispatch(remoteClipClear()) + dispatch(localNotifClear()) + dispatch(remoteNotifClear()) + dispatch(disconnect()) + } + let layout = "" if (width < 600) layout = "compact"; @@ -56,7 +64,7 @@ export default function ClipPage(){ let page; if (active == "clips") page = ; - if (active == "notif") page = ; + if (active == "notif") page = ; if (active == "settings") page = ; return ( no - @@ -99,6 +107,15 @@ export default function ClipPage(){ setOpen(false) }} /> + { + setActive('notif'); + setOpen(false) + }} + /> }else{ return - + + { + setActive('notif'); + setOpen(false) + }} + /> { + localClipAddToList: (state,action) => { state.localClip = [...state.localClip,action.payload] }, - localRemoveFromList: (state,action) => { + localClipRemoveFromList: (state,action) => { state.localClip = state.localClip.filter(e => e !== action.payload) + }, + localClipClear : (state,action) =>{ + state.localClip = [] } } }) -export const {localAddToList, localRemoveFromList} = localClipsSlice.actions; +export const {localClipAddToList, localClipRemoveFromList, localClipClear} = localClipsSlice.actions; // Remote clip structure // [ @@ -56,17 +59,59 @@ export const remoteClipsSlice = createSlice({ remoteClip:[], }, reducers: { - remoteAddToList: (state,) => { + remoteClipAddToList: (state,action) => { + console.log(action.payload); + state.remoteClip = action.payload + }, + remoteClipRemoveFromList: (state,action) => { + state.remoteClip = state.remoteClip.filter(e => e !== action.payload); + }, + remoteClipClear : (state,action) =>{ state.remoteClip = [] }, - remoteRemoveFromList: state => { - state.remoteClip = [] + + } +}) + +export const {remoteClipAddToList, remoteClipRemoveFromList, remoteClipClear} = remoteClipsSlice.actions; + + +export const localNotifsSlice = createSlice({ + name: 'localNotifs', + initialState: { + localNotif:[], + }, + reducers: { + localNotifAddToList: (state,action) => { + state.localNotif = [...state.localNotif,action.payload] + }, + localNotifRemoveFromList: (state,action) => { + state.localNotif = state.localNotif.filter(e => e !== action.payload) + }, + localNotifClear : (state,action) =>{ + state.localNotif = [] } } }) -export const {remoteAddToList, remoteRemoveFromList} = remoteClipsSlice.actions; - - +export const {localNotifAddToList, localNotifRemoveFromList, localNotifClear} = localNotifsSlice.actions; +export const remoteNotifsSlice = createSlice({ + name: 'remoteNotifs', + initialState: { + remoteNotif:[], + }, + reducers: { + remoteNotifAddToList: (state,action) => { + state.remoteNotif = [...action.payload] + }, + remoteNotifRemoveFromList: (state,action) => { + state.remoteNotif = state.remoteNotif.filter(e => e !== action.payload); + }, + remoteNotifClear : (state,action) =>{ + state.remoteNotif = [] + } + } +}) +export const {remoteNotifAddToList, remoteNotifRemoveFromList, remoteNotifClear} = remoteNotifsSlice.actions; diff --git a/src/redux/store.tsx b/src/redux/store.tsx index 7fd1eee..2a95445 100644 --- a/src/redux/store.tsx +++ b/src/redux/store.tsx @@ -1,17 +1,29 @@ import { applyMiddleware,configureStore } from '@reduxjs/toolkit' import { combineReducers } from '@reduxjs/toolkit'; import { userSlice, localClipsSlice ,remoteClipsSlice } from './reducers'; -import thunkMiddleware from 'redux-thunk' +import { localNotifsSlice,remoteNotifsSlice } from './reducers'; +import { persistStore, persistReducer } from 'redux-persist' +import AsyncStorage from '@react-native-async-storage/async-storage'; +const persistConfig = { + key: "root", + storage: AsyncStorage, +}; const rootReducer = combineReducers({ user:userSlice.reducer, - local:localClipsSlice.reducer, - remote:remoteClipsSlice.reducer + localClip:localClipsSlice.reducer, + remoteClip:remoteClipsSlice.reducer, + localNotif:localNotifsSlice.reducer, + remoteNotif:remoteNotifsSlice.reducer }); +const persistedReducer = persistReducer(persistConfig, rootReducer) + const store = configureStore({ - reducer: rootReducer + reducer: persistedReducer }) -export {store}; +const persistor = persistStore(store) + +export {store, persistor};