├── .watchmanconfig ├── app.json ├── jest.config.js ├── .bundle └── config ├── tsconfig.json ├── .eslintrc.js ├── assets └── fonts │ ├── Entypo.ttf │ ├── Zocial.ttf │ ├── AntDesign.ttf │ ├── EvilIcons.ttf │ ├── Feather.ttf │ ├── Fontisto.ttf │ ├── Ionicons.ttf │ ├── Octicons.ttf │ ├── FontAwesome.ttf │ ├── Foundation.ttf │ ├── MaterialIcons.ttf │ ├── SimpleLineIcons.ttf │ ├── FontAwesome5_Brands.ttf │ ├── FontAwesome5_Solid.ttf │ ├── FontAwesome6_Brands.ttf │ ├── FontAwesome6_Solid.ttf │ ├── FontAwesome5_Regular.ttf │ ├── FontAwesome6_Regular.ttf │ ├── NunitoSans_10pt-Bold.ttf │ ├── NunitoSans_10pt-Light.ttf │ ├── MaterialCommunityIcons.ttf │ ├── NunitoSans_10pt-Medium.ttf │ ├── NunitoSans_10pt-Regular.ttf │ └── NunitoSans_10pt-SemiBold.ttf ├── android ├── app │ ├── debug.keystore │ ├── src │ │ ├── main │ │ │ ├── res │ │ │ │ ├── values │ │ │ │ │ ├── strings.xml │ │ │ │ │ └── styles.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ └── drawable │ │ │ │ │ └── rn_edit_text_material.xml │ │ │ ├── assets │ │ │ │ └── fonts │ │ │ │ │ ├── Entypo.ttf │ │ │ │ │ ├── Feather.ttf │ │ │ │ │ ├── Fontisto.ttf │ │ │ │ │ ├── Ionicons.ttf │ │ │ │ │ ├── Octicons.ttf │ │ │ │ │ ├── Zocial.ttf │ │ │ │ │ ├── AntDesign.ttf │ │ │ │ │ ├── EvilIcons.ttf │ │ │ │ │ ├── Foundation.ttf │ │ │ │ │ ├── FontAwesome.ttf │ │ │ │ │ ├── MaterialIcons.ttf │ │ │ │ │ ├── SimpleLineIcons.ttf │ │ │ │ │ ├── FontAwesome5_Solid.ttf │ │ │ │ │ ├── FontAwesome6_Solid.ttf │ │ │ │ │ ├── FontAwesome5_Brands.ttf │ │ │ │ │ ├── FontAwesome5_Regular.ttf │ │ │ │ │ ├── FontAwesome6_Brands.ttf │ │ │ │ │ ├── FontAwesome6_Regular.ttf │ │ │ │ │ ├── NunitoSans_10pt-Bold.ttf │ │ │ │ │ ├── MaterialCommunityIcons.ttf │ │ │ │ │ ├── NunitoSans_10pt-Light.ttf │ │ │ │ │ ├── NunitoSans_10pt-Medium.ttf │ │ │ │ │ ├── NunitoSans_10pt-Regular.ttf │ │ │ │ │ └── NunitoSans_10pt-SemiBold.ttf │ │ │ ├── AndroidManifest.xml │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── todolist │ │ │ │ ├── MainActivity.java │ │ │ │ └── MainApplication.java │ │ ├── debug │ │ │ ├── AndroidManifest.xml │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── todolist │ │ │ │ └── ReactNativeFlipper.java │ │ └── release │ │ │ └── java │ │ │ └── com │ │ │ └── todolist │ │ │ └── ReactNativeFlipper.java │ ├── proguard-rules.pro │ ├── google-services.json │ └── build.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── settings.gradle ├── build.gradle ├── gradle.properties ├── gradlew.bat ├── link-assets-manifest.json └── gradlew ├── src ├── assets │ └── images │ │ └── card-bg.png ├── constants │ ├── fontFamilies.ts │ └── colors.ts ├── models │ └── TaskModel.ts ├── screens │ ├── SearchScreen.tsx │ ├── tasks │ │ └── AddNewTask.tsx │ └── homes │ │ └── HomeScreen.tsx ├── components │ ├── SpaceComponent.tsx │ ├── SectionComponent.tsx │ ├── CardComponent.tsx │ ├── TitleComponent.tsx │ ├── CardImageConponent.tsx │ ├── TagComponent.tsx │ ├── TextComponent.tsx │ ├── CicularComponent.tsx │ ├── RowComponent.tsx │ ├── ButtonComponent.tsx │ ├── ProgressBarComponent.tsx │ ├── AvatarGroup.tsx │ ├── Container.tsx │ ├── InputComponent.tsx │ └── DateTimePickerComponent.tsx ├── styles │ └── globalStyles.ts ├── routers │ └── Router.tsx └── auth │ ├── LoginScreen.tsx │ └── RegisterScreen.tsx ├── ios ├── todolist │ ├── Images.xcassets │ │ ├── Contents.json │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── AppDelegate.h │ ├── main.m │ ├── AppDelegate.mm │ ├── GoogleService-Info.plist │ ├── Info.plist │ └── LaunchScreen.storyboard ├── todolist.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── .xcode.env ├── todolistTests │ ├── Info.plist │ └── todolistTests.m ├── Podfile ├── link-assets-manifest.json └── todolist.xcodeproj │ ├── xcshareddata │ └── xcschemes │ │ └── todolist.xcscheme │ └── project.pbxproj ├── babel.config.js ├── .prettierrc.js ├── index.js ├── Gemfile ├── react-native.config.js ├── metro.config.js ├── __tests__ └── App.test.tsx ├── App.tsx ├── .gitignore ├── package.json ├── Gemfile.lock └── README.md /.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "todolist", 3 | "displayName": "todolist" 4 | } 5 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: 'react-native', 3 | }; 4 | -------------------------------------------------------------------------------- /.bundle/config: -------------------------------------------------------------------------------- 1 | BUNDLE_PATH: "vendor/bundle" 2 | BUNDLE_FORCE_RUBY_PLATFORM: 1 3 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/react-native/tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: '@react-native', 4 | }; 5 | -------------------------------------------------------------------------------- /assets/fonts/Entypo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/Entypo.ttf -------------------------------------------------------------------------------- /assets/fonts/Zocial.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/Zocial.ttf -------------------------------------------------------------------------------- /android/app/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/debug.keystore -------------------------------------------------------------------------------- /assets/fonts/AntDesign.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/AntDesign.ttf -------------------------------------------------------------------------------- /assets/fonts/EvilIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/EvilIcons.ttf -------------------------------------------------------------------------------- /assets/fonts/Feather.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/Feather.ttf -------------------------------------------------------------------------------- /assets/fonts/Fontisto.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/Fontisto.ttf -------------------------------------------------------------------------------- /assets/fonts/Ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/Ionicons.ttf -------------------------------------------------------------------------------- /assets/fonts/Octicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/Octicons.ttf -------------------------------------------------------------------------------- /assets/fonts/FontAwesome.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/FontAwesome.ttf -------------------------------------------------------------------------------- /assets/fonts/Foundation.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/Foundation.ttf -------------------------------------------------------------------------------- /assets/fonts/MaterialIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/MaterialIcons.ttf -------------------------------------------------------------------------------- /src/assets/images/card-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/src/assets/images/card-bg.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | todolist 3 | 4 | -------------------------------------------------------------------------------- /assets/fonts/SimpleLineIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/SimpleLineIcons.ttf -------------------------------------------------------------------------------- /assets/fonts/FontAwesome5_Brands.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/FontAwesome5_Brands.ttf -------------------------------------------------------------------------------- /assets/fonts/FontAwesome5_Solid.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/FontAwesome5_Solid.ttf -------------------------------------------------------------------------------- /assets/fonts/FontAwesome6_Brands.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/FontAwesome6_Brands.ttf -------------------------------------------------------------------------------- /assets/fonts/FontAwesome6_Solid.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/FontAwesome6_Solid.ttf -------------------------------------------------------------------------------- /ios/todolist/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /assets/fonts/FontAwesome5_Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/FontAwesome5_Regular.ttf -------------------------------------------------------------------------------- /assets/fonts/FontAwesome6_Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/FontAwesome6_Regular.ttf -------------------------------------------------------------------------------- /assets/fonts/NunitoSans_10pt-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/NunitoSans_10pt-Bold.ttf -------------------------------------------------------------------------------- /assets/fonts/NunitoSans_10pt-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/NunitoSans_10pt-Light.ttf -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /assets/fonts/MaterialCommunityIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/MaterialCommunityIcons.ttf -------------------------------------------------------------------------------- /assets/fonts/NunitoSans_10pt-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/NunitoSans_10pt-Medium.ttf -------------------------------------------------------------------------------- /assets/fonts/NunitoSans_10pt-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/NunitoSans_10pt-Regular.ttf -------------------------------------------------------------------------------- /assets/fonts/NunitoSans_10pt-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/assets/fonts/NunitoSans_10pt-SemiBold.ttf -------------------------------------------------------------------------------- /ios/todolist/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : RCTAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Entypo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/Entypo.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Feather.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/Feather.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Fontisto.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/Fontisto.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/Ionicons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Octicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/Octicons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Zocial.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/Zocial.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/AntDesign.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/AntDesign.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/EvilIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/EvilIcons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Foundation.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/Foundation.ttf -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ['module:metro-react-native-babel-preset'], 3 | plugins: ['react-native-reanimated/plugin'], 4 | }; 5 | -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/FontAwesome.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/FontAwesome.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/MaterialIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/MaterialIcons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/SimpleLineIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/SimpleLineIcons.ttf -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/FontAwesome6_Solid.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/FontAwesome6_Solid.ttf -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/FontAwesome6_Brands.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/FontAwesome6_Brands.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/FontAwesome6_Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/FontAwesome6_Regular.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/NunitoSans_10pt-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/NunitoSans_10pt-Bold.ttf -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | arrowParens: 'avoid', 3 | bracketSameLine: true, 4 | bracketSpacing: false, 5 | singleQuote: true, 6 | trailingComma: 'all', 7 | }; 8 | -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/NunitoSans_10pt-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/NunitoSans_10pt-Light.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/NunitoSans_10pt-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/NunitoSans_10pt-Medium.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/NunitoSans_10pt-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/NunitoSans_10pt-Regular.ttf -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/NunitoSans_10pt-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsdaoquang/to-do-list-app/HEAD/android/app/src/main/assets/fonts/NunitoSans_10pt-SemiBold.ttf -------------------------------------------------------------------------------- /src/constants/fontFamilies.ts: -------------------------------------------------------------------------------- 1 | export const fontFamilies = { 2 | regular: 'NunitoSans_10pt-Regular', 3 | medium: 'NunitoSans_10pt-Medium', 4 | semiBold: 'NunitoSans_10pt-SemiBold', 5 | bold: 'NunitoSans_10pt-Bold', 6 | }; 7 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @format 3 | */ 4 | 5 | import {AppRegistry} from 'react-native'; 6 | import App from './App'; 7 | import {name as appName} from './app.json'; 8 | 9 | AppRegistry.registerComponent(appName, () => App); 10 | -------------------------------------------------------------------------------- /src/constants/colors.ts: -------------------------------------------------------------------------------- 1 | export const colors = { 2 | bgColor: '#171719', 3 | gray: '#222329', 4 | gray2: '#696B6F', 5 | text: '#ffffff', 6 | desc: '#e6e6e6', 7 | blue: '#3618e0b3', 8 | white: '#fafafa', 9 | }; 10 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version 4 | ruby "3.0.6p216" 5 | 6 | gem 'cocoapods', '~> 1.13' 7 | gem 'activesupport', '>= 6.1.7.3', '< 7.1.0' 8 | -------------------------------------------------------------------------------- /src/models/TaskModel.ts: -------------------------------------------------------------------------------- 1 | export interface TaskModel { 2 | title: string; 3 | desctiption: string; 4 | dueDate: Date; 5 | start: Date; 6 | end: Date; 7 | uids: string[]; 8 | color?: string; 9 | fileUrls: string[]; 10 | } 11 | -------------------------------------------------------------------------------- /ios/todolist/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | @autoreleasepool { 8 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /react-native.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | project: { 3 | ios: {}, 4 | android: {}, 5 | }, 6 | assets: ['./assets/fonts'], 7 | dependencies: { 8 | 'react-native-vector-icons': { 9 | platforms: {}, 10 | }, 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'todolist' 2 | apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) 3 | include ':app' 4 | includeBuild('../node_modules/@react-native/gradle-plugin') 5 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-all.zip 4 | networkTimeout=10000 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | -------------------------------------------------------------------------------- /ios/todolist.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ios/todolist.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /metro.config.js: -------------------------------------------------------------------------------- 1 | const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config'); 2 | 3 | /** 4 | * Metro configuration 5 | * https://facebook.github.io/metro/docs/configuration 6 | * 7 | * @type {import('metro-config').MetroConfig} 8 | */ 9 | const config = {}; 10 | 11 | module.exports = mergeConfig(getDefaultConfig(__dirname), config); 12 | -------------------------------------------------------------------------------- /src/screens/SearchScreen.tsx: -------------------------------------------------------------------------------- 1 | import {View, Text} from 'react-native'; 2 | import React from 'react'; 3 | import Container from '../components/Container'; 4 | 5 | const SearchScreen = ({navigation}: any) => { 6 | return ( 7 | 8 | SearchScreen 9 | 10 | ); 11 | }; 12 | 13 | export default SearchScreen; 14 | -------------------------------------------------------------------------------- /src/components/SpaceComponent.tsx: -------------------------------------------------------------------------------- 1 | import {View, Text} from 'react-native'; 2 | import React from 'react'; 3 | 4 | interface Props { 5 | width?: number; 6 | height?: number; 7 | } 8 | 9 | const SpaceComponent = (props: Props) => { 10 | const {width, height} = props; 11 | 12 | return ; 13 | }; 14 | 15 | export default SpaceComponent; 16 | -------------------------------------------------------------------------------- /__tests__/App.test.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * @format 3 | */ 4 | 5 | import 'react-native'; 6 | import React from 'react'; 7 | import App from '../App'; 8 | 9 | // Note: import explicitly to use the types shiped with jest. 10 | import {it} from '@jest/globals'; 11 | 12 | // Note: test renderer must be required after react-native. 13 | import renderer from 'react-test-renderer'; 14 | 15 | it('renders correctly', () => { 16 | renderer.create(); 17 | }); 18 | -------------------------------------------------------------------------------- /android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | -------------------------------------------------------------------------------- /src/components/SectionComponent.tsx: -------------------------------------------------------------------------------- 1 | import React, {ReactNode} from 'react'; 2 | import {StyleProp, View, ViewStyle} from 'react-native'; 3 | import {globalStyles} from '../styles/globalStyles'; 4 | 5 | interface Props { 6 | children: ReactNode; 7 | styles?: StyleProp; 8 | } 9 | 10 | const SectionComponent = (props: Props) => { 11 | const {children, styles} = props; 12 | 13 | return {children}; 14 | }; 15 | 16 | export default SectionComponent; 17 | -------------------------------------------------------------------------------- /ios/.xcode.env: -------------------------------------------------------------------------------- 1 | # This `.xcode.env` file is versioned and is used to source the environment 2 | # used when running script phases inside Xcode. 3 | # To customize your local environment, you can create an `.xcode.env.local` 4 | # file that is not versioned. 5 | 6 | # NODE_BINARY variable contains the PATH to the node executable. 7 | # 8 | # Customize the NODE_BINARY variable here. 9 | # For example, to use nvm with brew, add the following line 10 | # . "$(brew --prefix nvm)/nvm.sh" --no-use 11 | export NODE_BINARY=$(command -v node) 12 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/components/CardComponent.tsx: -------------------------------------------------------------------------------- 1 | import {View, Text, StyleProp, ViewStyle} from 'react-native'; 2 | import React, {ReactNode} from 'react'; 3 | import {globalStyles} from '../styles/globalStyles'; 4 | 5 | interface Props { 6 | children: ReactNode; 7 | bgColor?: string; 8 | styles?: StyleProp; 9 | } 10 | 11 | const CardComponent = (props: Props) => { 12 | const {children, bgColor, styles} = props; 13 | 14 | return ( 15 | 16 | {children} 17 | 18 | ); 19 | }; 20 | 21 | export default CardComponent; 22 | -------------------------------------------------------------------------------- /App.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import {SafeAreaView, StatusBar} from 'react-native'; 3 | import {colors} from './src/constants/colors'; 4 | import HomeScreen from './src/screens/homes/HomeScreen'; 5 | import {NavigationContainer} from '@react-navigation/native'; 6 | import Router from './src/routers/Router'; 7 | 8 | const App = () => { 9 | return ( 10 | <> 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | ); 19 | }; 20 | 21 | export default App; 22 | -------------------------------------------------------------------------------- /src/components/TitleComponent.tsx: -------------------------------------------------------------------------------- 1 | import {View, Text} from 'react-native'; 2 | import React from 'react'; 3 | import TextComponent from './TextComponent'; 4 | import {fontFamilies} from '../constants/fontFamilies'; 5 | 6 | interface Props { 7 | text: string; 8 | font?: string; 9 | size?: number; 10 | color?: string; 11 | flex?: number; 12 | } 13 | 14 | const TitleComponent = (props: Props) => { 15 | const {text, font, size, color, flex} = props; 16 | 17 | return ( 18 | 25 | ); 26 | }; 27 | 28 | export default TitleComponent; 29 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | ext { 5 | buildToolsVersion = "33.0.0" 6 | minSdkVersion = 21 7 | compileSdkVersion = 33 8 | targetSdkVersion = 33 9 | 10 | // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP. 11 | ndkVersion = "23.1.7779620" 12 | } 13 | repositories { 14 | google() 15 | mavenCentral() 16 | } 17 | dependencies { 18 | classpath("com.android.tools.build:gradle") 19 | classpath("com.facebook.react:react-native-gradle-plugin") 20 | classpath 'com.google.gms:google-services:4.4.0' 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /android/app/google-services.json: -------------------------------------------------------------------------------- 1 | { 2 | "project_info": { 3 | "project_number": "729975885940", 4 | "project_id": "todolistapp-6e5c6", 5 | "storage_bucket": "todolistapp-6e5c6.appspot.com" 6 | }, 7 | "client": [ 8 | { 9 | "client_info": { 10 | "mobilesdk_app_id": "1:729975885940:android:fdecb099e835d84e4cc121", 11 | "android_client_info": { 12 | "package_name": "com.todolist" 13 | } 14 | }, 15 | "oauth_client": [], 16 | "api_key": [ 17 | { 18 | "current_key": "AIzaSyDvnaNW3bfT4sztieh2vittZQsHk1kQJoA" 19 | } 20 | ], 21 | "services": { 22 | "appinvite_service": { 23 | "other_platform_oauth_client": [] 24 | } 25 | } 26 | } 27 | ], 28 | "configuration_version": "1" 29 | } -------------------------------------------------------------------------------- /android/app/src/release/java/com/todolist/ReactNativeFlipper.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | *

This source code is licensed under the MIT license found in the LICENSE file in the root 5 | * directory of this source tree. 6 | */ 7 | package com.todolist; 8 | 9 | import android.content.Context; 10 | import com.facebook.react.ReactInstanceManager; 11 | 12 | /** 13 | * Class responsible of loading Flipper inside your React Native application. This is the release 14 | * flavor of it so it's empty as we don't want to load Flipper. 15 | */ 16 | public class ReactNativeFlipper { 17 | public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { 18 | // Do nothing as we don't want to initialize Flipper on Release. 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /ios/todolistTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/components/CardImageConponent.tsx: -------------------------------------------------------------------------------- 1 | import {View, Text, ImageBackground} from 'react-native'; 2 | import React, {ReactNode} from 'react'; 3 | import {globalStyles} from '../styles/globalStyles'; 4 | interface Props { 5 | children: ReactNode; 6 | color?: string; 7 | } 8 | 9 | const CardImageConponent = (props: Props) => { 10 | const {children, color} = props; 11 | 12 | return ( 13 | 17 | 26 | {children} 27 | 28 | 29 | ); 30 | }; 31 | 32 | export default CardImageConponent; 33 | -------------------------------------------------------------------------------- /ios/todolist/AppDelegate.mm: -------------------------------------------------------------------------------- 1 | #import "AppDelegate.h" 2 | #import 3 | #import 4 | 5 | @implementation AppDelegate 6 | 7 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 8 | { 9 | 10 | [FIRApp configure]; 11 | 12 | self.moduleName = @"todolist"; 13 | // You can add your custom initial props in the dictionary below. 14 | // They will be passed down to the ViewController used by React Native. 15 | self.initialProps = @{}; 16 | 17 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 18 | } 19 | 20 | - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge 21 | { 22 | #if DEBUG 23 | return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; 24 | #else 25 | return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; 26 | #endif 27 | } 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /src/components/TagComponent.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import {StyleProp, TextStyle, TouchableOpacity, ViewStyle} from 'react-native'; 3 | import {globalStyles} from '../styles/globalStyles'; 4 | import TextComponent from './TextComponent'; 5 | import {colors} from '../constants/colors'; 6 | 7 | interface Props { 8 | text: string; 9 | color?: string; 10 | tagStyles?: StyleProp; 11 | textStyles?: StyleProp; 12 | onPress?: () => void; 13 | } 14 | 15 | const TagComponent = (props: Props) => { 16 | const {text, textStyles, color, tagStyles, onPress} = props; 17 | 18 | return ( 19 | 27 | 28 | 29 | ); 30 | }; 31 | 32 | export default TagComponent; 33 | -------------------------------------------------------------------------------- /src/components/TextComponent.tsx: -------------------------------------------------------------------------------- 1 | import {View, Text, StyleProp, TextStyle} from 'react-native'; 2 | import React from 'react'; 3 | import {globalStyles} from '../styles/globalStyles'; 4 | import {fontFamilies} from '../constants/fontFamilies'; 5 | import {colors} from '../constants/colors'; 6 | 7 | interface Props { 8 | text: string; 9 | size?: number; 10 | font?: string; 11 | color?: string; 12 | flex?: number; 13 | styles?: StyleProp; 14 | } 15 | 16 | const TextComponent = (props: Props) => { 17 | const {text, font, size, color, flex, styles} = props; 18 | 19 | return ( 20 | 31 | {text} 32 | 33 | ); 34 | }; 35 | 36 | export default TextComponent; 37 | -------------------------------------------------------------------------------- /src/components/CicularComponent.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import CircularProgress from 'react-native-circular-progress-indicator'; 3 | import {colors} from '../constants/colors'; 4 | import {fontFamilies} from '../constants/fontFamilies'; 5 | 6 | interface Props { 7 | color?: string; 8 | value: number; 9 | maxValue?: number; 10 | radius?: number; 11 | } 12 | 13 | const CicularComponent = (props: Props) => { 14 | const {color, value, maxValue, radius} = props; 15 | return ( 16 | 31 | ); 32 | }; 33 | 34 | export default CicularComponent; 35 | -------------------------------------------------------------------------------- /ios/todolist/GoogleService-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | API_KEY 6 | AIzaSyC2UlX6pQqDi_ojuAjMrAPN6kiGjCflE5A 7 | GCM_SENDER_ID 8 | 729975885940 9 | PLIST_VERSION 10 | 1 11 | BUNDLE_ID 12 | org.reactjs.native.example.todolist 13 | PROJECT_ID 14 | todolistapp-6e5c6 15 | STORAGE_BUCKET 16 | todolistapp-6e5c6.appspot.com 17 | IS_ADS_ENABLED 18 | 19 | IS_ANALYTICS_ENABLED 20 | 21 | IS_APPINVITE_ENABLED 22 | 23 | IS_GCM_ENABLED 24 | 25 | IS_SIGNIN_ENABLED 26 | 27 | GOOGLE_APP_ID 28 | 1:729975885940:ios:82db0dc67e8ec8214cc121 29 | 30 | -------------------------------------------------------------------------------- /src/components/RowComponent.tsx: -------------------------------------------------------------------------------- 1 | import {View, Text, TouchableOpacity, StyleProp, ViewStyle} from 'react-native'; 2 | import React, {ReactNode} from 'react'; 3 | import {globalStyles} from '../styles/globalStyles'; 4 | 5 | interface Props { 6 | children: ReactNode; 7 | justify?: 8 | | 'center' 9 | | 'flex-start' 10 | | 'flex-end' 11 | | 'space-between' 12 | | 'space-around' 13 | | 'space-evenly' 14 | | undefined; 15 | onPress?: () => void; 16 | styles?: StyleProp; 17 | } 18 | 19 | const RowComponent = (props: Props) => { 20 | const {children, justify, onPress, styles} = props; 21 | 22 | const localStyle = [ 23 | globalStyles.row, 24 | { 25 | justifyContent: justify ?? 'center', 26 | }, 27 | styles, 28 | ]; 29 | 30 | return onPress ? ( 31 | onPress() : undefined}> 34 | {children} 35 | 36 | ) : ( 37 | {children} 38 | ); 39 | }; 40 | 41 | export default RowComponent; 42 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /ios/todolist/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "scale" : "2x", 6 | "size" : "20x20" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "scale" : "3x", 11 | "size" : "20x20" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "scale" : "2x", 16 | "size" : "29x29" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "scale" : "3x", 21 | "size" : "29x29" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "scale" : "2x", 26 | "size" : "40x40" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "scale" : "3x", 31 | "size" : "40x40" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "scale" : "2x", 36 | "size" : "60x60" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "scale" : "3x", 41 | "size" : "60x60" 42 | }, 43 | { 44 | "idiom" : "ios-marketing", 45 | "scale" : "1x", 46 | "size" : "1024x1024" 47 | } 48 | ], 49 | "info" : { 50 | "author" : "xcode", 51 | "version" : 1 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/components/ButtonComponent.tsx: -------------------------------------------------------------------------------- 1 | import {View, Text, TouchableOpacity, ActivityIndicator} from 'react-native'; 2 | import React, {ReactNode} from 'react'; 3 | import TextComponent from './TextComponent'; 4 | import {colors} from '../constants/colors'; 5 | 6 | interface Props { 7 | text: string; 8 | icon?: ReactNode; 9 | onPress: () => void; 10 | color?: string; 11 | isLoading?: boolean; 12 | } 13 | 14 | const ButtonComponent = (props: Props) => { 15 | const {text, icon, onPress, color, isLoading} = props; 16 | 17 | return ( 18 | 29 | {isLoading ? ( 30 | 31 | ) : ( 32 | 38 | )} 39 | 40 | ); 41 | }; 42 | 43 | export default ButtonComponent; 44 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/todolist/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.todolist; 2 | 3 | import com.facebook.react.ReactActivity; 4 | import com.facebook.react.ReactActivityDelegate; 5 | import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; 6 | import com.facebook.react.defaults.DefaultReactActivityDelegate; 7 | 8 | public class MainActivity extends ReactActivity { 9 | 10 | /** 11 | * Returns the name of the main component registered from JavaScript. This is used to schedule 12 | * rendering of the component. 13 | */ 14 | @Override 15 | protected String getMainComponentName() { 16 | return "todolist"; 17 | } 18 | 19 | /** 20 | * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link 21 | * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React 22 | * (aka React 18) with two boolean flags. 23 | */ 24 | @Override 25 | protected ReactActivityDelegate createReactActivityDelegate() { 26 | return new DefaultReactActivityDelegate( 27 | this, 28 | getMainComponentName(), 29 | // If you opted-in for the New Architecture, we enable the Fabric Renderer. 30 | DefaultNewArchitectureEntryPoint.getFabricEnabled()); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | ios/.xcode.env.local 24 | 25 | # Android/IntelliJ 26 | # 27 | build/ 28 | .idea 29 | .gradle 30 | local.properties 31 | *.iml 32 | *.hprof 33 | .cxx/ 34 | *.keystore 35 | !debug.keystore 36 | 37 | # node.js 38 | # 39 | node_modules/ 40 | npm-debug.log 41 | yarn-error.log 42 | 43 | # fastlane 44 | # 45 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 46 | # screenshots whenever they are needed. 47 | # For more information about the recommended setup visit: 48 | # https://docs.fastlane.tools/best-practices/source-control/ 49 | 50 | **/fastlane/report.xml 51 | **/fastlane/Preview.html 52 | **/fastlane/screenshots 53 | **/fastlane/test_output 54 | 55 | # Bundle artifact 56 | *.jsbundle 57 | 58 | # Ruby / CocoaPods 59 | /ios/Pods/ 60 | /vendor/bundle/ 61 | 62 | # Temporary files created by Metro to check the health of the file watcher 63 | .metro-health-check* 64 | 65 | # testing 66 | /coverage 67 | -------------------------------------------------------------------------------- /src/styles/globalStyles.ts: -------------------------------------------------------------------------------- 1 | import {Platform, StyleSheet} from 'react-native'; 2 | import {colors} from '../constants/colors'; 3 | import {fontFamilies} from '../constants/fontFamilies'; 4 | 5 | export const globalStyles = StyleSheet.create({ 6 | container: { 7 | flex: 1, 8 | backgroundColor: colors.bgColor, 9 | paddingTop: 20, 10 | }, 11 | 12 | row: { 13 | flexDirection: 'row', 14 | justifyContent: 'center', 15 | alignItems: 'center', 16 | }, 17 | 18 | text: { 19 | fontSize: 14, 20 | fontFamily: fontFamilies.regular, 21 | color: colors.text, 22 | }, 23 | 24 | inputContainer: { 25 | backgroundColor: colors.gray, 26 | borderRadius: 12, 27 | paddingHorizontal: Platform.OS === 'ios' ? 12 : 10, 28 | paddingVertical: 12, 29 | }, 30 | 31 | section: { 32 | marginBottom: 16, 33 | paddingHorizontal: 20, 34 | }, 35 | 36 | tag: { 37 | paddingHorizontal: 20, 38 | paddingVertical: Platform.OS === 'ios' ? 6 : 4, 39 | borderRadius: 100, 40 | backgroundColor: colors.blue, 41 | }, 42 | 43 | card: { 44 | borderRadius: 12, 45 | }, 46 | 47 | iconContainer: { 48 | width: 40, 49 | height: 40, 50 | borderRadius: 100, 51 | backgroundColor: 'rgba(0,0,0,0.2)', 52 | justifyContent: 'center', 53 | alignItems: 'center', 54 | marginBottom: 16, 55 | }, 56 | }); 57 | -------------------------------------------------------------------------------- /src/components/ProgressBarComponent.tsx: -------------------------------------------------------------------------------- 1 | import {View, Text, DimensionValue} from 'react-native'; 2 | import React from 'react'; 3 | import {colors} from '../constants/colors'; 4 | import RowComponent from './RowComponent'; 5 | import TextComponent from './TextComponent'; 6 | import {fontFamilies} from '../constants/fontFamilies'; 7 | 8 | interface Props { 9 | size?: 'small' | 'default' | 'large'; 10 | color?: string; 11 | percent: DimensionValue; 12 | } 13 | 14 | const ProgressBarComponent = (props: Props) => { 15 | const {size, color, percent} = props; 16 | 17 | const heightContent = size === 'small' ? 6 : size === 'large' ? 10 : 8; 18 | 19 | return ( 20 | 21 | 28 | 36 | 37 | 38 | 39 | 45 | 46 | 47 | ); 48 | }; 49 | 50 | export default ProgressBarComponent; 51 | -------------------------------------------------------------------------------- /src/routers/Router.tsx: -------------------------------------------------------------------------------- 1 | import {createNativeStackNavigator} from '@react-navigation/native-stack'; 2 | import React, {useEffect, useState} from 'react'; 3 | import HomeScreen from '../screens/homes/HomeScreen'; 4 | import AddNewTask from '../screens/tasks/AddNewTask'; 5 | import SearchScreen from '../screens/SearchScreen'; 6 | import LoginScreen from '../auth/LoginScreen'; 7 | import auth from '@react-native-firebase/auth'; 8 | import RegisterScreen from '../auth/RegisterScreen'; 9 | 10 | const Router = () => { 11 | const [isLogin, setIsLogin] = useState(false); 12 | 13 | const Stack = createNativeStackNavigator(); 14 | const MainNavigator = ( 15 | 19 | 20 | 21 | 22 | 23 | ); 24 | const AuthNavigator = ( 25 | 29 | 30 | 31 | 32 | ); 33 | 34 | useEffect(() => { 35 | auth().onAuthStateChanged(user => { 36 | if (user) { 37 | setIsLogin(true); 38 | } else { 39 | setIsLogin(false); 40 | } 41 | }); 42 | }, []); 43 | 44 | return isLogin ? MainNavigator : AuthNavigator; 45 | }; 46 | 47 | export default Router; 48 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "todolist", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "android": "react-native run-android", 7 | "ios": "react-native run-ios", 8 | "lint": "eslint .", 9 | "start": "react-native start", 10 | "test": "jest" 11 | }, 12 | "dependencies": { 13 | "@react-native-firebase/app": "^18.7.3", 14 | "@react-native-firebase/auth": "^18.7.3", 15 | "@react-native-firebase/firestore": "^18.7.3", 16 | "@react-native-firebase/storage": "^18.7.3", 17 | "@react-navigation/native": "^6.1.9", 18 | "@react-navigation/native-stack": "^6.9.17", 19 | "iconsax-react-native": "^0.0.8", 20 | "react": "18.2.0", 21 | "react-native": "0.72.7", 22 | "react-native-circular-progress-indicator": "^4.4.2", 23 | "react-native-date-picker": "^4.3.4", 24 | "react-native-reanimated": "^3.6.1", 25 | "react-native-redash": "^18.1.1", 26 | "react-native-safe-area-context": "^4.8.1", 27 | "react-native-screens": "^3.29.0", 28 | "react-native-svg": "^14.1.0", 29 | "react-native-vector-icons": "^10.0.2" 30 | }, 31 | "devDependencies": { 32 | "@babel/core": "^7.20.0", 33 | "@babel/preset-env": "^7.20.0", 34 | "@babel/runtime": "^7.20.0", 35 | "@react-native/eslint-config": "^0.72.2", 36 | "@react-native/metro-config": "^0.72.11", 37 | "@tsconfig/react-native": "^3.0.0", 38 | "@types/react": "^18.0.24", 39 | "@types/react-native-vector-icons": "^6.4.18", 40 | "@types/react-test-renderer": "^18.0.0", 41 | "babel-jest": "^29.2.1", 42 | "eslint": "^8.19.0", 43 | "jest": "^29.2.1", 44 | "metro-react-native-babel-preset": "0.76.8", 45 | "prettier": "^2.4.1", 46 | "react-test-renderer": "18.2.0", 47 | "typescript": "4.8.4" 48 | }, 49 | "engines": { 50 | "node": ">=16" 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/components/AvatarGroup.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import RowComponent from './RowComponent'; 3 | import {Image, View} from 'react-native'; 4 | import TextComponent from './TextComponent'; 5 | import {colors} from '../constants/colors'; 6 | import {globalStyles} from '../styles/globalStyles'; 7 | import {fontFamilies} from '../constants/fontFamilies'; 8 | 9 | const AvatarGroup = () => { 10 | const uidsLength = 10; 11 | const imageUrl = `https://gamek.mediacdn.vn/133514250583805952/2022/5/18/photo-1-16528608926331302726659.jpg`; 12 | const imageStyle = { 13 | width: 32, 14 | height: 32, 15 | borderRadius: 100, 16 | borderWidth: 2, 17 | borderColor: colors.white, 18 | }; 19 | return ( 20 | 21 | {Array.from({length: uidsLength}).map( 22 | (item, index) => 23 | index < 3 && ( 24 | 0 ? -10 : 0}]} 28 | /> 29 | ), 30 | )} 31 | 32 | {uidsLength > 5 && ( 33 | 44 | 9 ? 9 : uidsLength - 3}`} 51 | /> 52 | 53 | )} 54 | 55 | ); 56 | }; 57 | 58 | export default AvatarGroup; 59 | -------------------------------------------------------------------------------- /src/components/Container.tsx: -------------------------------------------------------------------------------- 1 | import {ArrowLeft2} from 'iconsax-react-native'; 2 | import React, {ReactNode} from 'react'; 3 | import {ScrollView, TouchableOpacity, View} from 'react-native'; 4 | import {colors} from '../constants/colors'; 5 | import {fontFamilies} from '../constants/fontFamilies'; 6 | import {globalStyles} from '../styles/globalStyles'; 7 | import RowComponent from './RowComponent'; 8 | import TextComponent from './TextComponent'; 9 | import {useNavigation} from '@react-navigation/native'; 10 | 11 | interface Props { 12 | title?: string; 13 | back?: boolean; 14 | right?: ReactNode; 15 | children: ReactNode; 16 | isScroll?: boolean; 17 | } 18 | 19 | const Container = (props: Props) => { 20 | const {title, back, right, children, isScroll} = props; 21 | 22 | const navigation: any = useNavigation(); 23 | 24 | return ( 25 | 26 | {/* Header container */} 27 | 28 | 35 | {back && ( 36 | navigation.goBack()}> 37 | 38 | 39 | )} 40 | 41 | {title && ( 42 | 49 | )} 50 | 51 | 52 | {isScroll ? ( 53 | {children} 54 | ) : ( 55 | {children} 56 | )} 57 | 58 | ); 59 | }; 60 | 61 | export default Container; 62 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx512m -XX:MaxMetaspaceSize=256m 13 | org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true 19 | 20 | # AndroidX package structure to make it clearer which packages are bundled with the 21 | # Android operating system, and which are packaged with your app's APK 22 | # https://developer.android.com/topic/libraries/support-library/androidx-rn 23 | android.useAndroidX=true 24 | # Automatically convert third-party libraries to use AndroidX 25 | android.enableJetifier=true 26 | 27 | # Version of flipper SDK to use with React Native 28 | FLIPPER_VERSION=0.182.0 29 | 30 | # Use this property to specify which architecture you want to build. 31 | # You can also override it from the CLI using 32 | # ./gradlew -PreactNativeArchitectures=x86_64 33 | reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 34 | 35 | # Use this property to enable support to the new architecture. 36 | # This will allow you to use TurboModules and the Fabric render in 37 | # your application. You should enable this flag either if you want 38 | # to write custom TurboModules/Fabric components OR use libraries that 39 | # are providing them. 40 | newArchEnabled=false 41 | 42 | # Use this property to enable or disable the Hermes JS engine. 43 | # If set to false, you will be using JSC instead. 44 | hermesEnabled=true 45 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/rn_edit_text_material.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 21 | 22 | 23 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/todolist/MainApplication.java: -------------------------------------------------------------------------------- 1 | package com.todolist; 2 | 3 | import android.app.Application; 4 | import com.facebook.react.PackageList; 5 | import com.facebook.react.ReactApplication; 6 | import com.facebook.react.ReactNativeHost; 7 | import com.facebook.react.ReactPackage; 8 | import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; 9 | import com.facebook.react.defaults.DefaultReactNativeHost; 10 | import com.facebook.soloader.SoLoader; 11 | import java.util.List; 12 | 13 | public class MainApplication extends Application implements ReactApplication { 14 | 15 | private final ReactNativeHost mReactNativeHost = 16 | new DefaultReactNativeHost(this) { 17 | @Override 18 | public boolean getUseDeveloperSupport() { 19 | return BuildConfig.DEBUG; 20 | } 21 | 22 | @Override 23 | protected List getPackages() { 24 | @SuppressWarnings("UnnecessaryLocalVariable") 25 | List packages = new PackageList(this).getPackages(); 26 | // Packages that cannot be autolinked yet can be added manually here, for example: 27 | // packages.add(new MyReactNativePackage()); 28 | return packages; 29 | } 30 | 31 | @Override 32 | protected String getJSMainModuleName() { 33 | return "index"; 34 | } 35 | 36 | @Override 37 | protected boolean isNewArchEnabled() { 38 | return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; 39 | } 40 | 41 | @Override 42 | protected Boolean isHermesEnabled() { 43 | return BuildConfig.IS_HERMES_ENABLED; 44 | } 45 | }; 46 | 47 | @Override 48 | public ReactNativeHost getReactNativeHost() { 49 | return mReactNativeHost; 50 | } 51 | 52 | @Override 53 | public void onCreate() { 54 | super.onCreate(); 55 | SoLoader.init(this, /* native exopackage */ false); 56 | if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { 57 | // If you opted-in for the New Architecture, we load the native entry point for this app. 58 | DefaultNewArchitectureEntryPoint.load(); 59 | } 60 | ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /ios/todolistTests/todolistTests.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | #import 5 | #import 6 | 7 | #define TIMEOUT_SECONDS 600 8 | #define TEXT_TO_LOOK_FOR @"Welcome to React" 9 | 10 | @interface todolistTests : XCTestCase 11 | 12 | @end 13 | 14 | @implementation todolistTests 15 | 16 | - (BOOL)findSubviewInView:(UIView *)view matching:(BOOL (^)(UIView *view))test 17 | { 18 | if (test(view)) { 19 | return YES; 20 | } 21 | for (UIView *subview in [view subviews]) { 22 | if ([self findSubviewInView:subview matching:test]) { 23 | return YES; 24 | } 25 | } 26 | return NO; 27 | } 28 | 29 | - (void)testRendersWelcomeScreen 30 | { 31 | UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; 32 | NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; 33 | BOOL foundElement = NO; 34 | 35 | __block NSString *redboxError = nil; 36 | #ifdef DEBUG 37 | RCTSetLogFunction( 38 | ^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { 39 | if (level >= RCTLogLevelError) { 40 | redboxError = message; 41 | } 42 | }); 43 | #endif 44 | 45 | while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { 46 | [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 47 | [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 48 | 49 | foundElement = [self findSubviewInView:vc.view 50 | matching:^BOOL(UIView *view) { 51 | if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { 52 | return YES; 53 | } 54 | return NO; 55 | }]; 56 | } 57 | 58 | #ifdef DEBUG 59 | RCTSetLogFunction(RCTDefaultLogFunction); 60 | #endif 61 | 62 | XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); 63 | XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); 64 | } 65 | 66 | @end 67 | -------------------------------------------------------------------------------- /ios/Podfile: -------------------------------------------------------------------------------- 1 | # Resolve react_native_pods.rb with node to allow for hoisting 2 | require Pod::Executable.execute_command('node', ['-p', 3 | 'require.resolve( 4 | "react-native/scripts/react_native_pods.rb", 5 | {paths: [process.argv[1]]}, 6 | )', __dir__]).strip 7 | 8 | platform :ios, min_ios_version_supported 9 | prepare_react_native_project! 10 | 11 | use_frameworks! :linkage => :static 12 | $RNFirebaseAsStaticFramework = true 13 | 14 | # If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set. 15 | # because `react-native-flipper` depends on (FlipperKit,...) that will be excluded 16 | # 17 | # To fix this you can also exclude `react-native-flipper` using a `react-native.config.js` 18 | # ```js 19 | # module.exports = { 20 | # dependencies: { 21 | # ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}), 22 | # ``` 23 | flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled 24 | 25 | linkage = ENV['USE_FRAMEWORKS'] 26 | if linkage != nil 27 | Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green 28 | use_frameworks! :linkage => linkage.to_sym 29 | end 30 | 31 | target 'todolist' do 32 | config = use_native_modules! 33 | 34 | # Flags change depending on the env values. 35 | flags = get_default_flags() 36 | 37 | use_react_native!( 38 | :path => config[:reactNativePath], 39 | # Hermes is now enabled by default. Disable by setting this flag to false. 40 | :hermes_enabled => false, 41 | :fabric_enabled => flags[:fabric_enabled], 42 | # Enables Flipper. 43 | # 44 | # Note that if you have use_frameworks! enabled, Flipper will not work and 45 | # you should disable the next line. 46 | # :flipper_configuration => flipper_config, 47 | # An absolute path to your application root. 48 | :app_path => "#{Pod::Config.instance.installation_root}/.." 49 | ) 50 | 51 | target 'todolistTests' do 52 | inherit! :complete 53 | # Pods for testing 54 | end 55 | 56 | post_install do |installer| 57 | # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202 58 | react_native_post_install( 59 | installer, 60 | config[:reactNativePath], 61 | :mac_catalyst_enabled => false 62 | ) 63 | __apply_Xcode_12_5_M1_post_install_workaround(installer) 64 | end 65 | end 66 | -------------------------------------------------------------------------------- /ios/todolist/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | todolist 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | $(MARKETING_VERSION) 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | $(CURRENT_PROJECT_VERSION) 25 | LSRequiresIPhoneOS 26 | 27 | NSAppTransportSecurity 28 | 29 | NSExceptionDomains 30 | 31 | localhost 32 | 33 | NSExceptionAllowsInsecureHTTPLoads 34 | 35 | 36 | 37 | 38 | NSLocationWhenInUseUsageDescription 39 | 40 | UILaunchStoryboardName 41 | LaunchScreen 42 | UIRequiredDeviceCapabilities 43 | 44 | armv7 45 | 46 | UISupportedInterfaceOrientations 47 | 48 | UIInterfaceOrientationPortrait 49 | UIInterfaceOrientationLandscapeLeft 50 | UIInterfaceOrientationLandscapeRight 51 | 52 | UIViewControllerBasedStatusBarAppearance 53 | 54 | UIAppFonts 55 | 56 | AntDesign.ttf 57 | Entypo.ttf 58 | EvilIcons.ttf 59 | Feather.ttf 60 | FontAwesome.ttf 61 | FontAwesome5_Brands.ttf 62 | FontAwesome5_Regular.ttf 63 | FontAwesome5_Solid.ttf 64 | FontAwesome6_Brands.ttf 65 | FontAwesome6_Regular.ttf 66 | FontAwesome6_Solid.ttf 67 | Fontisto.ttf 68 | Foundation.ttf 69 | Ionicons.ttf 70 | MaterialCommunityIcons.ttf 71 | MaterialIcons.ttf 72 | Octicons.ttf 73 | SimpleLineIcons.ttf 74 | Zocial.ttf 75 | NunitoSans_10pt-Bold.ttf 76 | NunitoSans_10pt-Light.ttf 77 | NunitoSans_10pt-Medium.ttf 78 | NunitoSans_10pt-Regular.ttf 79 | NunitoSans_10pt-SemiBold.ttf 80 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | CFPropertyList (3.0.6) 5 | rexml 6 | activesupport (7.0.8) 7 | concurrent-ruby (~> 1.0, >= 1.0.2) 8 | i18n (>= 1.6, < 2) 9 | minitest (>= 5.1) 10 | tzinfo (~> 2.0) 11 | addressable (2.8.5) 12 | public_suffix (>= 2.0.2, < 6.0) 13 | algoliasearch (1.27.5) 14 | httpclient (~> 2.8, >= 2.8.3) 15 | json (>= 1.5.1) 16 | atomos (0.1.3) 17 | claide (1.1.0) 18 | cocoapods (1.14.3) 19 | addressable (~> 2.8) 20 | claide (>= 1.0.2, < 2.0) 21 | cocoapods-core (= 1.14.3) 22 | cocoapods-deintegrate (>= 1.0.3, < 2.0) 23 | cocoapods-downloader (>= 2.1, < 3.0) 24 | cocoapods-plugins (>= 1.0.0, < 2.0) 25 | cocoapods-search (>= 1.0.0, < 2.0) 26 | cocoapods-trunk (>= 1.6.0, < 2.0) 27 | cocoapods-try (>= 1.1.0, < 2.0) 28 | colored2 (~> 3.1) 29 | escape (~> 0.0.4) 30 | fourflusher (>= 2.3.0, < 3.0) 31 | gh_inspector (~> 1.0) 32 | molinillo (~> 0.8.0) 33 | nap (~> 1.0) 34 | ruby-macho (>= 2.3.0, < 3.0) 35 | xcodeproj (>= 1.23.0, < 2.0) 36 | cocoapods-core (1.14.3) 37 | activesupport (>= 5.0, < 8) 38 | addressable (~> 2.8) 39 | algoliasearch (~> 1.0) 40 | concurrent-ruby (~> 1.1) 41 | fuzzy_match (~> 2.0.4) 42 | nap (~> 1.0) 43 | netrc (~> 0.11) 44 | public_suffix (~> 4.0) 45 | typhoeus (~> 1.0) 46 | cocoapods-deintegrate (1.0.5) 47 | cocoapods-downloader (2.1) 48 | cocoapods-plugins (1.0.0) 49 | nap 50 | cocoapods-search (1.0.1) 51 | cocoapods-trunk (1.6.0) 52 | nap (>= 0.8, < 2.0) 53 | netrc (~> 0.11) 54 | cocoapods-try (1.2.0) 55 | colored2 (3.1.2) 56 | concurrent-ruby (1.2.2) 57 | escape (0.0.4) 58 | ethon (0.16.0) 59 | ffi (>= 1.15.0) 60 | ffi (1.16.3) 61 | fourflusher (2.3.1) 62 | fuzzy_match (2.0.4) 63 | gh_inspector (1.1.3) 64 | httpclient (2.8.3) 65 | i18n (1.14.1) 66 | concurrent-ruby (~> 1.0) 67 | json (2.6.3) 68 | minitest (5.20.0) 69 | molinillo (0.8.0) 70 | nanaimo (0.3.0) 71 | nap (1.1.0) 72 | netrc (0.11.0) 73 | public_suffix (4.0.7) 74 | rexml (3.2.6) 75 | ruby-macho (2.5.1) 76 | typhoeus (1.4.1) 77 | ethon (>= 0.9.0) 78 | tzinfo (2.0.6) 79 | concurrent-ruby (~> 1.0) 80 | xcodeproj (1.23.0) 81 | CFPropertyList (>= 2.3.3, < 4.0) 82 | atomos (~> 0.1.3) 83 | claide (>= 1.0.2, < 2.0) 84 | colored2 (~> 3.1) 85 | nanaimo (~> 0.3.0) 86 | rexml (~> 3.2.4) 87 | 88 | PLATFORMS 89 | ruby 90 | 91 | DEPENDENCIES 92 | activesupport (>= 6.1.7.3, < 7.1.0) 93 | cocoapods (~> 1.13) 94 | 95 | RUBY VERSION 96 | ruby 3.2.2p53 97 | 98 | BUNDLED WITH 99 | 2.4.10 100 | -------------------------------------------------------------------------------- /src/screens/tasks/AddNewTask.tsx: -------------------------------------------------------------------------------- 1 | import React, {useState} from 'react'; 2 | import {Button, View} from 'react-native'; 3 | import Container from '../../components/Container'; 4 | import DateTimePickerComponent from '../../components/DateTimePickerComponent'; 5 | import InputComponent from '../../components/InputComponent'; 6 | import RowComponent from '../../components/RowComponent'; 7 | import SectionComponent from '../../components/SectionComponent'; 8 | import SpaceComponent from '../../components/SpaceComponent'; 9 | import {TaskModel} from '../../models/TaskModel'; 10 | 11 | const initValue: TaskModel = { 12 | title: '', 13 | desctiption: '', 14 | dueDate: new Date(), 15 | start: new Date(), 16 | end: new Date(), 17 | uids: [], 18 | fileUrls: [], 19 | }; 20 | 21 | const AddNewTask = ({navigation}: any) => { 22 | const [taskDetail, setTaskDetail] = useState(initValue); 23 | 24 | const handleChangeValue = (id: string, value: string | Date) => { 25 | const item: any = {...taskDetail}; 26 | 27 | item[`${id}`] = value; 28 | 29 | setTaskDetail(item); 30 | }; 31 | 32 | const handleAddNewTask = async () => { 33 | console.log(taskDetail); 34 | }; 35 | 36 | return ( 37 | 38 | 39 | handleChangeValue('title', val)} 42 | title="Title" 43 | allowClear 44 | placeholder="Title of task" 45 | /> 46 | handleChangeValue('desctiption', val)} 49 | title="Description" 50 | allowClear 51 | placeholder="Content" 52 | multible 53 | numberOfLine={3} 54 | /> 55 | 56 | handleChangeValue('dueDate', val)} 59 | placeholder="Choice" 60 | type="date" 61 | title="Due date" 62 | /> 63 | 64 | 65 | 66 | handleChangeValue('start', val)} 70 | title="Start" 71 | /> 72 | 73 | 74 | 75 | handleChangeValue('end', val)} 78 | title="End" 79 | type="time" 80 | /> 81 | 82 | 83 | 84 | 85 |