From f7b3a754d28faf6dc993072da7bdcb73324f18a2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EA=B3=A0=EB=B3=91=EC=B0=AC?=
<70642609+byungchanKo99@users.noreply.github.com>
Date: Thu, 21 Nov 2024 14:49:01 +0900
Subject: [PATCH 1/4] =?UTF-8?q?[SZ-538]feat:=20=EC=8A=A4=ED=81=AC=EB=A1=A4?=
=?UTF-8?q?=20=EB=B2=84=EA=B7=B8=20=ED=95=B4=EA=B2=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app.config.js | 1 +
app/(tabs)/index.jsx | 58 ++++++----
.../todayView/dailyTodos/DailyTodos.tsx | 108 +++++++++---------
3 files changed, 88 insertions(+), 79 deletions(-)
diff --git a/app.config.js b/app.config.js
index a85ef0f..d9eca1a 100644
--- a/app.config.js
+++ b/app.config.js
@@ -77,6 +77,7 @@ const expoConfig = {
},
package: 'com.safezone.onestep',
versionCode: 7,
+ softwareKeyboardLayoutMode: 'pan',
},
web: {
favicon: './assets/favicon.png',
diff --git a/app/(tabs)/index.jsx b/app/(tabs)/index.jsx
index 71e301b..62086a2 100644
--- a/app/(tabs)/index.jsx
+++ b/app/(tabs)/index.jsx
@@ -13,7 +13,13 @@ import useTodosQuery from '@/hooks/api/useTodoQuery';
import { handleLogEvent, TODAYVIEW_VIEW_EVENT } from '@/utils/logEvent';
import { default as React, Suspense, useContext } from 'react';
import { useTranslation } from 'react-i18next';
-import { SafeAreaView, StyleSheet, View } from 'react-native';
+import {
+ KeyboardAvoidingView,
+ Platform,
+ SafeAreaView,
+ StyleSheet,
+ View,
+} from 'react-native';
import { FlatList } from 'react-native-gesture-handler';
import { scale, verticalScale } from 'react-native-size-matters';
@@ -34,7 +40,7 @@ const TodayView = () => {
const renderCategoriesTodo = ({ item }) => {
return (
-
+
@@ -47,22 +53,29 @@ const TodayView = () => {
-
-
-
-
-
- }
- >
-
-
-
-
+
+
+
+
+
+
+ }
+ >
+ item.id}
+ contentContainerStyle={styles.flatList}
+ />
+
+
+
+
@@ -72,17 +85,18 @@ const TodayView = () => {
const styles = StyleSheet.create({
container: {
flex: 1,
+ height: '100%',
backgroundColor: 'white',
},
- bottomContainer: {
- paddingHorizontal: scale(20),
- paddingTop: verticalScale(20),
- },
suspenseBox: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
+ flatList: {
+ paddingHorizontal: scale(20),
+ paddingTop: verticalScale(20),
+ },
});
export default TodayView;
diff --git a/components/todayView/dailyTodos/DailyTodos.tsx b/components/todayView/dailyTodos/DailyTodos.tsx
index 84a82e7..d33cf12 100644
--- a/components/todayView/dailyTodos/DailyTodos.tsx
+++ b/components/todayView/dailyTodos/DailyTodos.tsx
@@ -16,44 +16,30 @@ import {
TODAYVIEW_TEXTINPUT_SUBMIT_EVENT,
} from '@/utils/logEvent';
import { Icon } from '@ui-kitten/components';
-import React, { Fragment, useContext } from 'react';
+import React, { useContext } from 'react';
import { useTranslation } from 'react-i18next';
-import {
- KeyboardAvoidingView,
- StyleSheet,
- TextInput,
- View,
-} from 'react-native';
+import { StyleSheet, TextInput, View } from 'react-native';
import DraggableFlatList from 'react-native-draggable-flatlist';
import { GestureHandlerRootView } from 'react-native-gesture-handler';
-import { KeyboardAccessoryView } from 'react-native-keyboard-accessory';
import DailyTodo from './dailyTodo/DailyTodo';
import { moderateScale, scale, verticalScale } from 'react-native-size-matters';
-interface DailyTodosProps {
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- todosData: any;
- categoryId: number;
-}
-
-const DailyTodos: React.FC = ({ todosData, categoryId }) => {
+const DailyTodos = ({ todosData, categoryId }) => {
const { userId } = useContext(LoginContext);
const { selectedDate } = useContext(DateContext);
- // const { data: todosData } = useTodosQuery(userId);
const { t } = useTranslation();
const currentTodos = useFilteredTodos(todosData, categoryId, selectedDate);
-
const { input, setInput, handleSubmit } = useCreateTodo(
userId,
categoryId,
selectedDate,
);
- const { isTextInputOpen, activatedCategoryId } = useContext(TextInputContext);
+ const { isTextInputOpen, activatedCategoryId, setTextInputOpen } =
+ useContext(TextInputContext);
const handleDragEnd = useHandleDrag();
- const { setTextInputOpen } = useContext(TextInputContext);
const handleInputSubmit = () => {
handleLogEvent(TODAYVIEW_TEXTINPUT_SUBMIT_EVENT, {
@@ -69,27 +55,22 @@ const DailyTodos: React.FC = ({ todosData, categoryId }) => {
};
return (
-
-
-
- item.id.toString()}
- onScroll={() => handleScroll(TODAYVIEW_SCROLL_EVENT, userId)}
- scrollEventThrottle={DEFAULT_SCROLL_EVENT_THROTTLE}
- />
-
- {isTextInputOpen && categoryId === activatedCategoryId ? (
-
+
+
+ item.id.toString()}
+ onScroll={() => handleScroll(TODAYVIEW_SCROLL_EVENT, userId)}
+ scrollEventThrottle={DEFAULT_SCROLL_EVENT_THROTTLE}
+ simultaneousHandlers={[]}
+ activationDistance={20}
+ containerStyle={styles.flatListContainer}
+ />
+
+ {isTextInputOpen && categoryId === activatedCategoryId && (
+
= ({ todosData, categoryId }) => {
autoFocus={true}
/>
-
- ) : null}
-
+
+ )}
+
);
};
const styles = StyleSheet.create({
- touchableCheck: {
- paddingTop: 0,
- justifyContent: 'center',
+ container: {
+ flex: 1,
},
- checkIcon: {
- width: scale(24),
- height: verticalScale(24),
+ mainContainer: {
+ flex: 1,
+ backgroundColor: 'white',
+ },
+ flatListContainer: {
+ flex: 1,
+ },
+ keyboardAvoidingView: {
+ width: '100%',
+ position: 'absolute',
+ bottom: 0,
+ backgroundColor: 'white',
+ },
+ inputWrapper: {
+ width: '100%',
+ borderTopWidth: StyleSheet.hairlineWidth,
+ borderTopColor: colors.Gray02,
+ backgroundColor: 'white',
},
inputContainer: {
flexDirection: 'row',
- justifyContent: 'center',
alignItems: 'center',
- paddingLeft: scale(7),
+ paddingHorizontal: scale(7),
+ paddingVertical: verticalScale(8),
+ },
+ checkIcon: {
+ width: scale(24),
+ height: verticalScale(24),
},
textInput: {
- backgroundColor: colors.Gray02,
flex: 1,
+ backgroundColor: colors.Gray02,
borderRadius: moderateScale(4),
marginLeft: scale(4),
paddingHorizontal: scale(8),
height: scale(24),
fontSize: moderateScale(14),
},
- keyboardInputContainer: {
- borderTopWidth: 0,
- justifyContent: 'center',
- backgroundColor: 'white',
- },
});
export default DailyTodos;
From 8f8c68cdb650dfd3043e1d7a8b84defb3188c511 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EA=B3=A0=EB=B3=91=EC=B0=AC?=
<70642609+byungchanKo99@users.noreply.github.com>
Date: Thu, 21 Nov 2024 14:49:25 +0900
Subject: [PATCH 2/4] =?UTF-8?q?[SZ-538]feat:=20=EB=94=94=EC=9E=90=EC=9D=B8?=
=?UTF-8?q?=20=EC=9D=BC=EB=B6=80=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/(tabs)/_layout.jsx | 9 +++++++++
.../generatedSubTodoList/GeneratedSubTodoList.tsx | 13 ++++++++++---
.../dailyTodo/subTodoList/DailySubTodo.jsx | 11 +++--------
.../dailyTodo/todoListItem/TodoListItem.tsx | 6 +++---
.../todoListItem/todoMoreMenu/TodoMoreMenu.tsx | 5 +++++
5 files changed, 30 insertions(+), 14 deletions(-)
diff --git a/app/(tabs)/_layout.jsx b/app/(tabs)/_layout.jsx
index 8b0564d..c9768e1 100644
--- a/app/(tabs)/_layout.jsx
+++ b/app/(tabs)/_layout.jsx
@@ -3,7 +3,9 @@ import '@/locales/index';
import { Tabs } from 'expo-router';
import React from 'react';
import { useTranslation } from 'react-i18next';
+import { verticalScale } from 'react-native-size-matters';
import MaterialIcons from 'react-native-vector-icons/MaterialIcons';
+import fontStyles from 'theme/fontStyles';
const todayIcon = ({ color, size }) => (
@@ -20,6 +22,13 @@ const TabLayout = () => {
{
@@ -29,13 +29,17 @@ const GeneratedSubTodoList = ({ generatedSubTodos, setGeneratedSubTodos }) => {
);
};
+ const listTitle = (evaProps, item) => (
+ {item.content}
+ );
+
const renderGeneratedTodo = ({ item, index }) => {
return (
listTitle(evaProps, item)}
/>
);
};
@@ -58,4 +62,7 @@ const styles = StyleSheet.create({
listItem: {
paddingLeft: scale(40),
},
+ titleStyle: {
+ fontSize: moderateScale(13),
+ },
});
diff --git a/components/todayView/dailyTodos/dailyTodo/subTodoList/DailySubTodo.jsx b/components/todayView/dailyTodos/dailyTodo/subTodoList/DailySubTodo.jsx
index 9a19ee4..4d0349a 100644
--- a/components/todayView/dailyTodos/dailyTodo/subTodoList/DailySubTodo.jsx
+++ b/components/todayView/dailyTodos/dailyTodo/subTodoList/DailySubTodo.jsx
@@ -72,20 +72,15 @@ const DailySubTodo = ({ item }) => {
const accessoryRight = () => {
return ;
};
- const title = () => (
+ const title = evaProps => (
<>
- {/* {item.dueTime && (
-
- {item.dueTime.split(':').slice(0, 2).join(':')}
-
- )} */}
>
);
diff --git a/components/todayView/dailyTodos/dailyTodo/todoListItem/TodoListItem.tsx b/components/todayView/dailyTodos/dailyTodo/todoListItem/TodoListItem.tsx
index 02fcb2c..eaaa586 100644
--- a/components/todayView/dailyTodos/dailyTodo/todoListItem/TodoListItem.tsx
+++ b/components/todayView/dailyTodos/dailyTodo/todoListItem/TodoListItem.tsx
@@ -1,7 +1,7 @@
import getIconFillColor from '@/utils/getIconFillColor';
import { Icon, ListItem, Text } from '@ui-kitten/components';
import React from 'react';
-import { Pressable, StyleSheet } from 'react-native';
+import { Pressable, StyleSheet, View } from 'react-native';
import { RenderItemParams } from 'react-native-draggable-flatlist';
import { Todo } from '../../../../../types/todo';
import EditableTextField from '../../../../common/molecules/EditableTextField';
@@ -74,7 +74,7 @@ const TodoListItem: React.FC = ({
};
const title = () => (
- <>
+
= ({
{item.dueTime.split(':').slice(0, 2).join(':')}
)}
- >
+
);
return (
diff --git a/components/todayView/dailyTodos/dailyTodo/todoListItem/todoMoreMenu/TodoMoreMenu.tsx b/components/todayView/dailyTodos/dailyTodo/todoListItem/todoMoreMenu/TodoMoreMenu.tsx
index 9251c78..0b4b19b 100644
--- a/components/todayView/dailyTodos/dailyTodo/todoListItem/todoMoreMenu/TodoMoreMenu.tsx
+++ b/components/todayView/dailyTodos/dailyTodo/todoListItem/todoMoreMenu/TodoMoreMenu.tsx
@@ -89,6 +89,7 @@ const TodoMoreMenu = ({
title=
onPress={() => {
handleEditPress();
+ setVisible(false);
}}
style={styles.topMenuItem}
/>
@@ -98,6 +99,7 @@ const TodoMoreMenu = ({
title=
onPress={() => {
handleDeletePress();
+ setVisible(false);
}}
style={styles.middleMenuItem}
/>
@@ -122,6 +124,7 @@ const TodoMoreMenu = ({
/>
onPress={() => {
handleGenerateSubTodoPress();
+ setVisible(false);
}}
style={styles.middleMenuItem}
/>
@@ -133,6 +136,7 @@ const TodoMoreMenu = ({
/>
onPress={() => {
handleAddSubTodoPress();
+ setVisible(false);
}}
style={styles.middleMenuItem}
/>
@@ -142,6 +146,7 @@ const TodoMoreMenu = ({
title=
onPress={() => {
handlePutTodoToInboxPress();
+ setVisible(false);
}}
style={styles.bottomMenuItem}
/>
From 8a3833ac602054aed82fe9b18587b13d05c9435d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EA=B3=A0=EB=B3=91=EC=B0=AC?=
<70642609+byungchanKo99@users.noreply.github.com>
Date: Thu, 21 Nov 2024 15:09:23 +0900
Subject: [PATCH 3/4] =?UTF-8?q?[SZ-538]feat:=20ios=EC=97=90=EC=84=9C=20?=
=?UTF-8?q?=EA=B0=80=EC=83=81=20=ED=82=A4=EB=B3=B4=EB=93=9C=20=EC=98=AC?=
=?UTF-8?q?=EB=9D=BC=EC=98=AC=EB=95=8C=20=EC=83=9D=EA=B8=B0=EB=8A=94=20?=
=?UTF-8?q?=EB=B2=84=EA=B7=B8=20=ED=95=B4=EA=B2=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/(tabs)/_layout.jsx | 4 +++-
app/(tabs)/index.jsx | 4 +++-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/app/(tabs)/_layout.jsx b/app/(tabs)/_layout.jsx
index c9768e1..bee5029 100644
--- a/app/(tabs)/_layout.jsx
+++ b/app/(tabs)/_layout.jsx
@@ -6,6 +6,7 @@ import { useTranslation } from 'react-i18next';
import { verticalScale } from 'react-native-size-matters';
import MaterialIcons from 'react-native-vector-icons/MaterialIcons';
import fontStyles from 'theme/fontStyles';
+import { Platform } from 'react-native';
const todayIcon = ({ color, size }) => (
@@ -24,7 +25,8 @@ const TabLayout = () => {
tabBarHideOnKeyboard: true, // 키보드가 활성화될 때 탭 바 숨기기
tabBarStyle: {
backgroundColor: 'white',
- height: verticalScale(45),
+ height:
+ Platform.OS === 'ios' ? verticalScale(75) : verticalScale(45),
},
tabBarLabelStyle: {
...fontStyles.Paragraph.P1.M_100,
diff --git a/app/(tabs)/index.jsx b/app/(tabs)/index.jsx
index 62086a2..502c1fc 100644
--- a/app/(tabs)/index.jsx
+++ b/app/(tabs)/index.jsx
@@ -56,6 +56,9 @@ const TodayView = () => {
@@ -85,7 +88,6 @@ const TodayView = () => {
const styles = StyleSheet.create({
container: {
flex: 1,
- height: '100%',
backgroundColor: 'white',
},
suspenseBox: {
From 3a8765819705b2c932c5620d928e416a6826e6fb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EA=B3=A0=EB=B3=91=EC=B0=AC?=
<70642609+byungchanKo99@users.noreply.github.com>
Date: Thu, 21 Nov 2024 15:17:30 +0900
Subject: [PATCH 4/4] =?UTF-8?q?[SZ-538]feat:=20ai=EC=84=9C=EB=B8=8C?=
=?UTF-8?q?=ED=88=AC=EB=91=90=20=EC=83=9D=EC=84=B1=EC=8B=9C=20=ED=95=98?=
=?UTF-8?q?=EB=8B=A8=ED=8C=A8=ED=8C=85=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/(tabs)/index.jsx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/(tabs)/index.jsx b/app/(tabs)/index.jsx
index 502c1fc..822307e 100644
--- a/app/(tabs)/index.jsx
+++ b/app/(tabs)/index.jsx
@@ -54,10 +54,10 @@ const TodayView = () => {