Compare commits
3 Commits
main
...
update_rn_
Author | SHA1 | Date | |
---|---|---|---|
5f49b36076 | |||
1b38306551 | |||
5e0189f487 |
@ -1,6 +0,0 @@
|
||||
|
||||
[android]
|
||||
target = Google Inc.:Google APIs:23
|
||||
|
||||
[maven_repositories]
|
||||
central = https://repo1.maven.org/maven2
|
2
.bundle/config
Normal file
@ -0,0 +1,2 @@
|
||||
BUNDLE_PATH: "vendor/bundle"
|
||||
BUNDLE_FORCE_RUBY_PLATFORM: 1
|
@ -1,4 +1,4 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
extends: '@react-native-community',
|
||||
extends: '@react-native',
|
||||
};
|
||||
|
75
.flowconfig
@ -1,75 +0,0 @@
|
||||
[ignore]
|
||||
; We fork some components by platform
|
||||
.*/*[.]android.js
|
||||
|
||||
; Ignore "BUCK" generated dirs
|
||||
<PROJECT_ROOT>/\.buckd/
|
||||
|
||||
; Ignore polyfills
|
||||
node_modules/react-native/Libraries/polyfills/.*
|
||||
|
||||
; These should not be required directly
|
||||
; require from fbjs/lib instead: require('fbjs/lib/warning')
|
||||
node_modules/warning/.*
|
||||
|
||||
; Flow doesn't support platforms
|
||||
.*/Libraries/Utilities/LoadingView.js
|
||||
|
||||
[untyped]
|
||||
.*/node_modules/@react-native-community/cli/.*/.*
|
||||
|
||||
[include]
|
||||
|
||||
[libs]
|
||||
node_modules/react-native/Libraries/react-native/react-native-interface.js
|
||||
node_modules/react-native/flow/
|
||||
|
||||
[options]
|
||||
emoji=true
|
||||
|
||||
esproposal.optional_chaining=enable
|
||||
esproposal.nullish_coalescing=enable
|
||||
|
||||
module.file_ext=.js
|
||||
module.file_ext=.json
|
||||
module.file_ext=.ios.js
|
||||
|
||||
munge_underscores=true
|
||||
|
||||
module.name_mapper='^react-native$' -> '<PROJECT_ROOT>/node_modules/react-native/Libraries/react-native/react-native-implementation'
|
||||
module.name_mapper='^react-native/\(.*\)$' -> '<PROJECT_ROOT>/node_modules/react-native/\1'
|
||||
module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '<PROJECT_ROOT>/node_modules/react-native/Libraries/Image/RelativeImageStub'
|
||||
|
||||
suppress_type=$FlowIssue
|
||||
suppress_type=$FlowFixMe
|
||||
suppress_type=$FlowFixMeProps
|
||||
suppress_type=$FlowFixMeState
|
||||
|
||||
suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)
|
||||
suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)?:? #[0-9]+
|
||||
suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError
|
||||
|
||||
[lints]
|
||||
sketchy-null-number=warn
|
||||
sketchy-null-mixed=warn
|
||||
sketchy-number=warn
|
||||
untyped-type-import=warn
|
||||
nonstrict-import=warn
|
||||
deprecated-type=warn
|
||||
unsafe-getters-setters=warn
|
||||
inexact-spread=warn
|
||||
unnecessary-invariant=warn
|
||||
signature-verification-failure=warn
|
||||
deprecated-utility=error
|
||||
|
||||
[strict]
|
||||
deprecated-type
|
||||
nonstrict-import
|
||||
sketchy-null
|
||||
unclear-type
|
||||
unsafe-getters-setters
|
||||
untyped-import
|
||||
untyped-type-import
|
||||
|
||||
[version]
|
||||
^0.105.0
|
1
.gitattributes
vendored
@ -1 +0,0 @@
|
||||
*.pbxproj -text
|
28
.gitignore
vendored
@ -20,6 +20,7 @@ DerivedData
|
||||
*.hmap
|
||||
*.ipa
|
||||
*.xcuserstate
|
||||
ios/.xcode.env.local
|
||||
|
||||
# Android/IntelliJ
|
||||
#
|
||||
@ -28,6 +29,10 @@ build/
|
||||
.gradle
|
||||
local.properties
|
||||
*.iml
|
||||
*.hprof
|
||||
.cxx/
|
||||
*.keystore
|
||||
!debug.keystore
|
||||
|
||||
# node.js
|
||||
#
|
||||
@ -35,13 +40,6 @@ node_modules/
|
||||
npm-debug.log
|
||||
yarn-error.log
|
||||
|
||||
# BUCK
|
||||
buck-out/
|
||||
\.buckd/
|
||||
*.keystore
|
||||
!debug.keystore
|
||||
!charoensin.release.keystore
|
||||
|
||||
# fastlane
|
||||
#
|
||||
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
|
||||
@ -49,12 +47,20 @@ buck-out/
|
||||
# For more information about the recommended setup visit:
|
||||
# https://docs.fastlane.tools/best-practices/source-control/
|
||||
|
||||
*/fastlane/report.xml
|
||||
*/fastlane/Preview.html
|
||||
*/fastlane/screenshots
|
||||
**/fastlane/report.xml
|
||||
**/fastlane/Preview.html
|
||||
**/fastlane/screenshots
|
||||
**/fastlane/test_output
|
||||
|
||||
# Bundle artifact
|
||||
*.jsbundle
|
||||
|
||||
# CocoaPods
|
||||
# Ruby / CocoaPods
|
||||
/ios/Pods/
|
||||
/vendor/bundle/
|
||||
|
||||
# Temporary files created by Metro to check the health of the file watcher
|
||||
.metro-health-check*
|
||||
|
||||
# testing
|
||||
/coverage
|
||||
|
@ -1,6 +1,7 @@
|
||||
module.exports = {
|
||||
arrowParens: 'avoid',
|
||||
bracketSameLine: true,
|
||||
bracketSpacing: false,
|
||||
jsxBracketSameLine: true,
|
||||
singleQuote: true,
|
||||
trailingComma: 'all',
|
||||
};
|
||||
|
3
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"java.configuration.updateBuildConfiguration": "automatic"
|
||||
}
|
46
App.js
@ -7,21 +7,21 @@
|
||||
*/
|
||||
|
||||
import React, { Component } from 'react'
|
||||
import { Platform, StyleSheet, Text, StatusBar, TouchableOpacity, View } from 'react-native'
|
||||
import { StatusBar, StyleSheet, Text, TouchableOpacity } from 'react-native'
|
||||
import MainNav from './src/navigation/MainNav'
|
||||
import firebase, { Notification } from 'react-native-firebase'
|
||||
import { store, persistor } from './src/redux/store'
|
||||
import messaging from '@react-native-firebase/messaging'
|
||||
import { persistor, store } from './src/redux/store'
|
||||
import { Provider } from 'react-redux'
|
||||
import { registerDevice, testConnect ,news} from './src/api/UserApi'
|
||||
import { appSetPushToken, appSetDevice, appCleanDevice,appSetNotification } from './src/redux/app/action'
|
||||
import { setLanguage, setStore as setApiStore, setToken } from 'src/api/api'
|
||||
import { registerDevice } from './src/api/UserApi'
|
||||
import { appSetDevice, appSetPushToken } from './src/redux/app/action'
|
||||
import { setLanguage, setToken } from 'src/api/api'
|
||||
import { PersistGate } from 'redux-persist/integration/react'
|
||||
import { create } from 'apisauce'
|
||||
|
||||
import SplashScreen from 'react-native-splash-screen'
|
||||
import { setBaseUrlByServerMode } from './src/api/api'
|
||||
|
||||
Text.defaultProps = Text.defaultProps || {};
|
||||
Text.defaultProps.allowFontScaling = false;
|
||||
Text.defaultProps = Text.defaultProps || {}
|
||||
Text.defaultProps.allowFontScaling = false
|
||||
|
||||
if (TouchableOpacity.defaultProps == null) TouchableOpacity.defaultProps = {}
|
||||
TouchableOpacity.defaultProps.activeOpacity = 0.7
|
||||
@ -29,7 +29,7 @@ TouchableOpacity.defaultProps.activeOpacity = 0.7
|
||||
// setApiStore(store)
|
||||
class App extends Component {
|
||||
|
||||
constructor(props) {
|
||||
constructor (props) {
|
||||
super(props)
|
||||
this._setDataFromInitState = this._setDataFromInitState.bind(this)
|
||||
}
|
||||
@ -37,15 +37,15 @@ class App extends Component {
|
||||
componentDidMount = () => {
|
||||
SplashScreen.hide()
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
initNotification = async () => {
|
||||
await this.setPermission()
|
||||
const fcmToken = await firebase.messaging().getToken()
|
||||
const fcmToken = await messaging().getAPNSToken()
|
||||
if (fcmToken) {
|
||||
store.dispatch(appSetPushToken(fcmToken))
|
||||
const resultSendDevice = await registerDevice(fcmToken)
|
||||
console.log(' re sult register_device =>',resultSendDevice);
|
||||
console.log(' re sult register_device =>', resultSendDevice)
|
||||
if (resultSendDevice.ok && resultSendDevice.data.success) {
|
||||
store.dispatch(appSetDevice(resultSendDevice.data.device))
|
||||
}
|
||||
@ -55,23 +55,27 @@ class App extends Component {
|
||||
|
||||
setPermission = async () => {
|
||||
try {
|
||||
const enabled = await firebase.messaging().hasPermission()
|
||||
await messaging().registerDeviceForRemoteMessages();
|
||||
const authStatus = await messaging().requestPermission();
|
||||
const enabled = authStatus === messaging.AuthorizationStatus.AUTHORIZED || authStatus === messaging.AuthorizationStatus.PROVISIONAL;
|
||||
if (!enabled) {
|
||||
await firebase.messaging().requestPermission()
|
||||
await messaging().requestPermission()
|
||||
}
|
||||
} catch (error) {
|
||||
console.log('error', error)
|
||||
}
|
||||
}
|
||||
|
||||
_setDataFromInitState() {
|
||||
_setDataFromInitState () {
|
||||
const appState = store.getState().app
|
||||
let device = appState.device;
|
||||
let device = appState.device
|
||||
|
||||
setBaseUrlByServerMode(appState.server_mode)
|
||||
|
||||
if (appState.token) {
|
||||
setToken(appState.token)
|
||||
}
|
||||
if(appState.lang){
|
||||
if (appState.lang) {
|
||||
setLanguage(appState.lang)
|
||||
}
|
||||
|
||||
@ -83,13 +87,13 @@ class App extends Component {
|
||||
|
||||
}
|
||||
|
||||
render() {
|
||||
render () {
|
||||
|
||||
return (
|
||||
<Provider store={store}>
|
||||
<PersistGate persistor={persistor} loading={null} onBeforeLift={this._setDataFromInitState}>
|
||||
<StatusBar barStyle="light-content"/>
|
||||
<MainNav />
|
||||
<MainNav/>
|
||||
</PersistGate>
|
||||
</Provider>
|
||||
)
|
||||
|
118
App.tsx
Normal file
@ -0,0 +1,118 @@
|
||||
/**
|
||||
* Sample React Native App
|
||||
* https://github.com/facebook/react-native
|
||||
*
|
||||
* @format
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
import type {PropsWithChildren} from 'react';
|
||||
import {
|
||||
SafeAreaView,
|
||||
ScrollView,
|
||||
StatusBar,
|
||||
StyleSheet,
|
||||
Text,
|
||||
useColorScheme,
|
||||
View,
|
||||
} from 'react-native';
|
||||
|
||||
import {
|
||||
Colors,
|
||||
DebugInstructions,
|
||||
Header,
|
||||
LearnMoreLinks,
|
||||
ReloadInstructions,
|
||||
} from 'react-native/Libraries/NewAppScreen';
|
||||
|
||||
type SectionProps = PropsWithChildren<{
|
||||
title: string;
|
||||
}>;
|
||||
|
||||
function Section({children, title}: SectionProps): JSX.Element {
|
||||
const isDarkMode = useColorScheme() === 'dark';
|
||||
return (
|
||||
<View style={styles.sectionContainer}>
|
||||
<Text
|
||||
style={[
|
||||
styles.sectionTitle,
|
||||
{
|
||||
color: isDarkMode ? Colors.white : Colors.black,
|
||||
},
|
||||
]}>
|
||||
{title}
|
||||
</Text>
|
||||
<Text
|
||||
style={[
|
||||
styles.sectionDescription,
|
||||
{
|
||||
color: isDarkMode ? Colors.light : Colors.dark,
|
||||
},
|
||||
]}>
|
||||
{children}
|
||||
</Text>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
||||
function App(): JSX.Element {
|
||||
const isDarkMode = useColorScheme() === 'dark';
|
||||
|
||||
const backgroundStyle = {
|
||||
backgroundColor: isDarkMode ? Colors.darker : Colors.lighter,
|
||||
};
|
||||
|
||||
return (
|
||||
<SafeAreaView style={backgroundStyle}>
|
||||
<StatusBar
|
||||
barStyle={isDarkMode ? 'light-content' : 'dark-content'}
|
||||
backgroundColor={backgroundStyle.backgroundColor}
|
||||
/>
|
||||
<ScrollView
|
||||
contentInsetAdjustmentBehavior="automatic"
|
||||
style={backgroundStyle}>
|
||||
<Header />
|
||||
<View
|
||||
style={{
|
||||
backgroundColor: isDarkMode ? Colors.black : Colors.white,
|
||||
}}>
|
||||
<Section title="Step One">
|
||||
Edit <Text style={styles.highlight}>App.tsx</Text> to change this
|
||||
screen and then come back to see your edits.
|
||||
</Section>
|
||||
<Section title="See Your Changes">
|
||||
<ReloadInstructions />
|
||||
</Section>
|
||||
<Section title="Debug">
|
||||
<DebugInstructions />
|
||||
</Section>
|
||||
<Section title="Learn More">
|
||||
Read the docs to discover what to do next:
|
||||
</Section>
|
||||
<LearnMoreLinks />
|
||||
</View>
|
||||
</ScrollView>
|
||||
</SafeAreaView>
|
||||
);
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
sectionContainer: {
|
||||
marginTop: 32,
|
||||
paddingHorizontal: 24,
|
||||
},
|
||||
sectionTitle: {
|
||||
fontSize: 24,
|
||||
fontWeight: '600',
|
||||
},
|
||||
sectionDescription: {
|
||||
marginTop: 8,
|
||||
fontSize: 18,
|
||||
fontWeight: '400',
|
||||
},
|
||||
highlight: {
|
||||
fontWeight: '700',
|
||||
},
|
||||
});
|
||||
|
||||
export default App;
|
8
Gemfile
Normal file
@ -0,0 +1,8 @@
|
||||
|
||||
source 'https://rubygems.org'
|
||||
|
||||
# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
|
||||
ruby ">= 2.6.10"
|
||||
|
||||
gem 'cocoapods', '~> 1.13'
|
||||
gem 'activesupport', '>= 6.1.7.3', '< 7.1.0'
|
79
README.md
@ -0,0 +1,79 @@
|
||||
This is a new [**React Native**](https://reactnative.dev) project, bootstrapped using [`@react-native-community/cli`](https://github.com/react-native-community/cli).
|
||||
|
||||
# Getting Started
|
||||
|
||||
>**Note**: Make sure you have completed the [React Native - Environment Setup](https://reactnative.dev/docs/environment-setup) instructions till "Creating a new application" step, before proceeding.
|
||||
|
||||
## Step 1: Start the Metro Server
|
||||
|
||||
First, you will need to start **Metro**, the JavaScript _bundler_ that ships _with_ React Native.
|
||||
|
||||
To start Metro, run the following command from the _root_ of your React Native project:
|
||||
|
||||
```bash
|
||||
# using npm
|
||||
npm start
|
||||
|
||||
# OR using Yarn
|
||||
yarn start
|
||||
```
|
||||
|
||||
## Step 2: Start your Application
|
||||
|
||||
Let Metro Bundler run in its _own_ terminal. Open a _new_ terminal from the _root_ of your React Native project. Run the following command to start your _Android_ or _iOS_ app:
|
||||
|
||||
### For Android
|
||||
|
||||
```bash
|
||||
# using npm
|
||||
npm run android
|
||||
|
||||
# OR using Yarn
|
||||
yarn android
|
||||
```
|
||||
|
||||
### For iOS
|
||||
|
||||
```bash
|
||||
# using npm
|
||||
npm run ios
|
||||
|
||||
# OR using Yarn
|
||||
yarn ios
|
||||
```
|
||||
|
||||
If everything is set up _correctly_, you should see your new app running in your _Android Emulator_ or _iOS Simulator_ shortly provided you have set up your emulator/simulator correctly.
|
||||
|
||||
This is one way to run your app — you can also run it directly from within Android Studio and Xcode respectively.
|
||||
|
||||
## Step 3: Modifying your App
|
||||
|
||||
Now that you have successfully run the app, let's modify it.
|
||||
|
||||
1. Open `App.tsx` in your text editor of choice and edit some lines.
|
||||
2. For **Android**: Press the <kbd>R</kbd> key twice or select **"Reload"** from the **Developer Menu** (<kbd>Ctrl</kbd> + <kbd>M</kbd> (on Window and Linux) or <kbd>Cmd ⌘</kbd> + <kbd>M</kbd> (on macOS)) to see your changes!
|
||||
|
||||
For **iOS**: Hit <kbd>Cmd ⌘</kbd> + <kbd>R</kbd> in your iOS Simulator to reload the app and see your changes!
|
||||
|
||||
## Congratulations! :tada:
|
||||
|
||||
You've successfully run and modified your React Native App. :partying_face:
|
||||
|
||||
### Now what?
|
||||
|
||||
- If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps).
|
||||
- If you're curious to learn more about React Native, check out the [Introduction to React Native](https://reactnative.dev/docs/getting-started).
|
||||
|
||||
# Troubleshooting
|
||||
|
||||
If you can't get this to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page.
|
||||
|
||||
# Learn More
|
||||
|
||||
To learn more about React Native, take a look at the following resources:
|
||||
|
||||
- [React Native Website](https://reactnative.dev) - learn more about React Native.
|
||||
- [Getting Started](https://reactnative.dev/docs/environment-setup) - an **overview** of React Native and how setup your environment.
|
||||
- [Learn the Basics](https://reactnative.dev/docs/getting-started) - a **guided tour** of the React Native **basics**.
|
||||
- [Blog](https://reactnative.dev/blog) - read the latest official React Native **Blog** posts.
|
||||
- [`@facebook/react-native`](https://github.com/facebook/react-native) - the Open Source; GitHub **repository** for React Native.
|
17
__tests__/App.test.tsx
Normal file
@ -0,0 +1,17 @@
|
||||
/**
|
||||
* @format
|
||||
*/
|
||||
|
||||
import 'react-native';
|
||||
import React from 'react';
|
||||
import App from '../App';
|
||||
|
||||
// Note: import explicitly to use the types shiped with jest.
|
||||
import {it} from '@jest/globals';
|
||||
|
||||
// Note: test renderer must be required after react-native.
|
||||
import renderer from 'react-test-renderer';
|
||||
|
||||
it('renders correctly', () => {
|
||||
renderer.create(<App />);
|
||||
});
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>csareactrn60</name>
|
||||
<name>charoensin-android</name>
|
||||
<comment>Project android created by Buildship.</comment>
|
||||
<projects>
|
||||
</projects>
|
||||
@ -14,4 +14,15 @@
|
||||
<natures>
|
||||
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
|
||||
</natures>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1689128079578</id>
|
||||
<name></name>
|
||||
<type>30</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.core.resources.regexFilterMatcher</id>
|
||||
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
</projectDescription>
|
||||
|
@ -1,2 +1,13 @@
|
||||
arguments=--init-script /var/folders/4d/cv31_tl15q381gddgqqtk94c0000gp/T/db3b08fc4a9ef609cb16b96b200fa13e563f396e9bb1ed0905fdab7bc3bc513b.gradle --init-script /var/folders/4d/cv31_tl15q381gddgqqtk94c0000gp/T/52cde0cfcf3e28b8b7510e992210d9614505e0911af0c190bd590d7158574963.gradle
|
||||
auto.sync=true
|
||||
build.scans.enabled=false
|
||||
connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
|
||||
connection.project.dir=
|
||||
eclipse.preferences.version=1
|
||||
gradle.user.home=
|
||||
java.home=/Users/Kumpor/Library/Java/JavaVirtualMachines/corretto-17.0.14/Contents/Home
|
||||
jvm.arguments=
|
||||
offline.mode=false
|
||||
override.workspace.settings=true
|
||||
show.console.view=true
|
||||
show.executions.view=true
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8/"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17/"/>
|
||||
<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/>
|
||||
<classpathentry kind="output" path="bin/default"/>
|
||||
</classpath>
|
||||
|
@ -20,4 +20,15 @@
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
|
||||
</natures>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1689128079519</id>
|
||||
<name></name>
|
||||
<type>30</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.core.resources.regexFilterMatcher</id>
|
||||
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
</projectDescription>
|
||||
|
4
android/app/.settings/org.eclipse.jdt.core.prefs
Normal file
@ -0,0 +1,4 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=27
|
||||
org.eclipse.jdt.core.compiler.compliance=27
|
||||
org.eclipse.jdt.core.compiler.source=27
|
@ -1,55 +0,0 @@
|
||||
# To learn about Buck see [Docs](https://buckbuild.com/).
|
||||
# To run your application with Buck:
|
||||
# - install Buck
|
||||
# - `npm start` - to start the packager
|
||||
# - `cd android`
|
||||
# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"`
|
||||
# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck
|
||||
# - `buck install -r android/app` - compile, install and run application
|
||||
#
|
||||
|
||||
load(":build_defs.bzl", "create_aar_targets", "create_jar_targets")
|
||||
|
||||
lib_deps = []
|
||||
|
||||
create_aar_targets(glob(["libs/*.aar"]))
|
||||
|
||||
create_jar_targets(glob(["libs/*.jar"]))
|
||||
|
||||
android_library(
|
||||
name = "all-libs",
|
||||
exported_deps = lib_deps,
|
||||
)
|
||||
|
||||
android_library(
|
||||
name = "app-code",
|
||||
srcs = glob([
|
||||
"src/main/java/**/*.java",
|
||||
]),
|
||||
deps = [
|
||||
":all-libs",
|
||||
":build_config",
|
||||
":res",
|
||||
],
|
||||
)
|
||||
|
||||
android_build_config(
|
||||
name = "build_config",
|
||||
package = "th.co.csasset.mobile",
|
||||
)
|
||||
|
||||
android_resource(
|
||||
name = "res",
|
||||
package = "th.co.csasset.mobile",
|
||||
res = "src/main/res",
|
||||
)
|
||||
|
||||
android_binary(
|
||||
name = "app",
|
||||
keystore = "//android/keystores:debug",
|
||||
manifest = "src/main/AndroidManifest.xml",
|
||||
package_type = "debug",
|
||||
deps = [
|
||||
":app-code",
|
||||
],
|
||||
)
|
@ -1,104 +1,65 @@
|
||||
// plugins {
|
||||
// id("com.facebook.react")
|
||||
// }
|
||||
apply plugin: "com.android.application"
|
||||
|
||||
import com.android.build.OutputFile
|
||||
apply plugin: "com.facebook.react"
|
||||
|
||||
/**
|
||||
* The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
|
||||
* and bundleReleaseJsAndAssets).
|
||||
* These basically call `react-native bundle` with the correct arguments during the Android build
|
||||
* cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
|
||||
* bundle directly from the development server. Below you can see all the possible configurations
|
||||
* and their defaults. If you decide to add a configuration block, make sure to add it before the
|
||||
* `apply from: "../../node_modules/react-native/react.gradle"` line.
|
||||
*
|
||||
* project.ext.react = [
|
||||
* // the name of the generated asset file containing your JS bundle
|
||||
* bundleAssetName: "index.android.bundle",
|
||||
*
|
||||
* // the entry file for bundle generation
|
||||
* entryFile: "index.android.js",
|
||||
*
|
||||
* // https://facebook.github.io/react-native/docs/performance#enable-the-ram-format
|
||||
* bundleCommand: "ram-bundle",
|
||||
*
|
||||
* // whether to bundle JS and assets in debug mode
|
||||
* bundleInDebug: false,
|
||||
*
|
||||
* // whether to bundle JS and assets in release mode
|
||||
* bundleInRelease: true,
|
||||
*
|
||||
* // whether to bundle JS and assets in another build variant (if configured).
|
||||
* // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
|
||||
* // The configuration property can be in the following formats
|
||||
* // 'bundleIn${productFlavor}${buildType}'
|
||||
* // 'bundleIn${buildType}'
|
||||
* // bundleInFreeDebug: true,
|
||||
* // bundleInPaidRelease: true,
|
||||
* // bundleInBeta: true,
|
||||
*
|
||||
* // whether to disable dev mode in custom build variants (by default only disabled in release)
|
||||
* // for example: to disable dev mode in the staging build type (if configured)
|
||||
* devDisabledInStaging: true,
|
||||
* // The configuration property can be in the following formats
|
||||
* // 'devDisabledIn${productFlavor}${buildType}'
|
||||
* // 'devDisabledIn${buildType}'
|
||||
*
|
||||
* // the root of your project, i.e. where "package.json" lives
|
||||
* root: "../../",
|
||||
*
|
||||
* // where to put the JS bundle asset in debug mode
|
||||
* jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
|
||||
*
|
||||
* // where to put the JS bundle asset in release mode
|
||||
* jsBundleDirRelease: "$buildDir/intermediates/assets/release",
|
||||
*
|
||||
* // where to put drawable resources / React Native assets, e.g. the ones you use via
|
||||
* // require('./image.png')), in debug mode
|
||||
* resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
|
||||
*
|
||||
* // where to put drawable resources / React Native assets, e.g. the ones you use via
|
||||
* // require('./image.png')), in release mode
|
||||
* resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
|
||||
*
|
||||
* // by default the gradle tasks are skipped if none of the JS files or assets change; this means
|
||||
* // that we don't look at files in android/ or ios/ to determine whether the tasks are up to
|
||||
* // date; if you have any other folders that you want to ignore for performance reasons (gradle
|
||||
* // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
|
||||
* // for example, you might want to remove it from here.
|
||||
* inputExcludes: ["android/**", "ios/**"],
|
||||
*
|
||||
* // override which node gets called and with what additional arguments
|
||||
* nodeExecutableAndArgs: ["node"],
|
||||
*
|
||||
* // supply additional arguments to the packager
|
||||
* extraPackagerArgs: []
|
||||
* ]
|
||||
* This is the configuration block to customize your React Native Android app.
|
||||
* By default you don't need to apply any configuration, just uncomment the lines you need.
|
||||
*/
|
||||
|
||||
project.ext.react = [
|
||||
entryFile: "index.js",
|
||||
enableHermes: false, // clean and rebuild if changing
|
||||
]
|
||||
|
||||
apply from: "../../node_modules/react-native/react.gradle"
|
||||
react {
|
||||
/* Folders */
|
||||
// The root of your project, i.e. where "package.json" lives. Default is '..'
|
||||
// root = file("../")
|
||||
// The folder where the react-native NPM package is. Default is ../node_modules/react-native
|
||||
// reactNativeDir = file("../node_modules/react-native")
|
||||
// The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen
|
||||
// codegenDir = file("../node_modules/@react-native/codegen")
|
||||
// The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js
|
||||
// cliFile = file("../node_modules/react-native/cli.js")
|
||||
|
||||
/* Variants */
|
||||
// The list of variants to that are debuggable. For those we're going to
|
||||
// skip the bundling of the JS bundle and the assets. By default is just 'debug'.
|
||||
// If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.
|
||||
// debuggableVariants = ["liteDebug", "prodDebug"]
|
||||
|
||||
/* Bundling */
|
||||
// A list containing the node command and its flags. Default is just 'node'.
|
||||
// nodeExecutableAndArgs = ["node"]
|
||||
//
|
||||
// The command to run when bundling. By default is 'bundle'
|
||||
// bundleCommand = "ram-bundle"
|
||||
//
|
||||
// The path to the CLI configuration file. Default is empty.
|
||||
// bundleConfig = file(../rn-cli.config.js)
|
||||
//
|
||||
// The name of the generated asset file containing your JS bundle
|
||||
// bundleAssetName = "MyApplication.android.bundle"
|
||||
//
|
||||
// The entry file for bundle generation. Default is 'index.android.js' or 'index.js'
|
||||
// entryFile = file("../js/MyApplication.android.js")
|
||||
//
|
||||
// A list of extra flags to pass to the 'bundle' commands.
|
||||
// See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle
|
||||
// extraPackagerArgs = []
|
||||
|
||||
/* Hermes Commands */
|
||||
// The hermes compiler command to run. By default it is 'hermesc'
|
||||
// hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc"
|
||||
//
|
||||
// The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map"
|
||||
// hermesFlags = ["-O", "-output-source-map"]
|
||||
}
|
||||
|
||||
/**
|
||||
* Set this to true to create two separate APKs instead of one:
|
||||
* - An APK that only works on ARM devices
|
||||
* - An APK that only works on x86 devices
|
||||
* The advantage is the size of the APK is reduced by about 4MB.
|
||||
* Upload all the APKs to the Play Store and people will download
|
||||
* the correct one based on the CPU architecture of their device.
|
||||
*/
|
||||
def enableSeparateBuildPerCPUArchitecture = false
|
||||
|
||||
/**
|
||||
* Run Proguard to shrink the Java bytecode in release builds.
|
||||
* Set this to true to Run Proguard on Release builds to minify the Java bytecode.
|
||||
*/
|
||||
def enableProguardInReleaseBuilds = false
|
||||
|
||||
/**
|
||||
* The preferred build flavor of JavaScriptCore.
|
||||
* The preferred build flavor of JavaScriptCore (JSC)
|
||||
*
|
||||
* For example, to use the international variant, you can use:
|
||||
* `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
|
||||
@ -110,39 +71,24 @@ def enableProguardInReleaseBuilds = false
|
||||
*/
|
||||
def jscFlavor = 'org.webkit:android-jsc:+'
|
||||
|
||||
/**
|
||||
* Whether to enable the Hermes VM.
|
||||
*
|
||||
* This should be set on project.ext.react and mirrored here. If it is not set
|
||||
* on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
|
||||
* and the benefits of using Hermes will therefore be sharply reduced.
|
||||
*/
|
||||
def enableHermes = project.ext.react.get("enableHermes", false);
|
||||
|
||||
android {
|
||||
namespace "com.csareactrn60"
|
||||
compileSdkVersion rootProject.ext.compileSdkVersion
|
||||
|
||||
defaultConfig {
|
||||
applicationId "th.co.csasset.mobile"
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode 100
|
||||
versionName "2.41"
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
applicationId "th.co.csasset.mobile"
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode 60
|
||||
versionName "2.12"
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
}
|
||||
splits {
|
||||
abi {
|
||||
reset()
|
||||
enable enableSeparateBuildPerCPUArchitecture
|
||||
universalApk false // If true, also generate a universal APK
|
||||
include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
|
||||
}
|
||||
}
|
||||
signingConfigs {
|
||||
debug {
|
||||
storeFile file('debug.keystore')
|
||||
@ -183,21 +129,7 @@ android {
|
||||
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
|
||||
}
|
||||
}
|
||||
// applicationVariants are e.g. debug, release
|
||||
applicationVariants.all { variant ->
|
||||
variant.outputs.each { output ->
|
||||
// For each separate APK per architecture, set a unique version code as described here:
|
||||
// https://developer.android.com/studio/build/configure-apk-splits.html
|
||||
def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
|
||||
def abi = output.getFilter(OutputFile.ABI)
|
||||
if (abi != null) { // null for the universal-debug, universal-release variants
|
||||
output.versionCodeOverride =
|
||||
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
packagingOptions {
|
||||
pickFirst '**/armeabi-v7a/libc++_shared.so'
|
||||
pickFirst '**/x86/libc++_shared.so'
|
||||
@ -209,31 +141,31 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: "libs", include: ["*.jar"])
|
||||
implementation "com.facebook.react:react-native:+" // From node_modules
|
||||
if (enableHermes) {
|
||||
def hermesPath = "../../node_modules/hermesvm/android/";
|
||||
debugImplementation files(hermesPath + "hermes-debug.aar")
|
||||
releaseImplementation files(hermesPath + "hermes-release.aar")
|
||||
} else {
|
||||
implementation jscFlavor
|
||||
// The version of react-native is set by the React Native Gradle Plugin
|
||||
implementation("com.facebook.react:react-android")
|
||||
implementation 'com.facebook.react:react-native:+'
|
||||
|
||||
debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}")
|
||||
debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
|
||||
exclude group:'com.squareup.okhttp3', module:'okhttp'
|
||||
}
|
||||
|
||||
debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}")
|
||||
if (hermesEnabled.toBoolean()) {
|
||||
implementation("com.facebook.react:hermes-android")
|
||||
} else {
|
||||
implementation jscFlavor
|
||||
}
|
||||
|
||||
implementation project(':react-native-device-info')
|
||||
implementation "com.google.android.gms:play-services-base:${googlePlayServiceVersion}"
|
||||
implementation "com.google.firebase:firebase-core:16.0.9"
|
||||
implementation "com.google.firebase:firebase-config:17.0.0"
|
||||
implementation "com.google.firebase:firebase-messaging:18.0.0"
|
||||
implementation "com.google.firebase:firebase-core:21.1.1"
|
||||
implementation "com.google.firebase:firebase-config:22.1.0"
|
||||
implementation "com.google.firebase:firebase-messaging:24.1.1"
|
||||
|
||||
// implementation 'com.facebook.android:facebook-android-sdk:[5,6)'
|
||||
}
|
||||
|
||||
// Run this once to be able to run the application with BUCK
|
||||
// puts all compile dependencies into folder libs for BUCK to use
|
||||
task copyDownloadableDepsToLibs(type: Copy) {
|
||||
from configurations.compile
|
||||
into 'libs'
|
||||
implementation 'com.facebook.android:facebook-android-sdk:[5,6)'
|
||||
}
|
||||
|
||||
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
|
||||
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
|
@ -1,19 +0,0 @@
|
||||
"""Helper definitions to glob .aar and .jar targets"""
|
||||
|
||||
def create_aar_targets(aarfiles):
|
||||
for aarfile in aarfiles:
|
||||
name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")]
|
||||
lib_deps.append(":" + name)
|
||||
android_prebuilt_aar(
|
||||
name = name,
|
||||
aar = aarfile,
|
||||
)
|
||||
|
||||
def create_jar_targets(jarfiles):
|
||||
for jarfile in jarfiles:
|
||||
name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")]
|
||||
lib_deps.append(":" + name)
|
||||
prebuilt_jar(
|
||||
name = name,
|
||||
binary_jar = jarfile,
|
||||
)
|
42
android/app/google-services-backup.json
Normal file
@ -0,0 +1,42 @@
|
||||
{
|
||||
"project_info": {
|
||||
"project_number": "300814322402",
|
||||
"firebase_url": "https://charoensin-ec628.firebaseio.com",
|
||||
"project_id": "charoensin-ec628",
|
||||
"storage_bucket": "charoensin-ec628.appspot.com"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:300814322402:android:61e2ca18a6ba4174",
|
||||
"android_client_info": {
|
||||
"package_name": "th.co.csasset.mobile"
|
||||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
{
|
||||
"client_id": "300814322402-82gqcb4dte5m2tv1dr2imsf0u7regk87.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyAIXzIwPy-023B3sbDQv42LaxXaSnJcWmU"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"analytics_service": {
|
||||
"status": 1
|
||||
},
|
||||
"appinvite_service": {
|
||||
"status": 1,
|
||||
"other_platform_oauth_client": []
|
||||
},
|
||||
"ads_service": {
|
||||
"status": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
}
|
@ -1,42 +1,48 @@
|
||||
{
|
||||
"project_info": {
|
||||
"project_number": "300814322402",
|
||||
"firebase_url": "https://charoensin-ec628.firebaseio.com",
|
||||
"project_id": "charoensin-ec628",
|
||||
"storage_bucket": "charoensin-ec628.appspot.com"
|
||||
"project_number": "468878476620",
|
||||
"firebase_url": "https://csasset-mobile.firebaseio.com",
|
||||
"project_id": "csasset-mobile",
|
||||
"storage_bucket": "csasset-mobile.appspot.com"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:300814322402:android:61e2ca18a6ba4174",
|
||||
"mobilesdk_app_id": "1:468878476620:android:61e2ca18a6ba4174",
|
||||
"android_client_info": {
|
||||
"package_name": "th.co.csasset.mobile"
|
||||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
{
|
||||
"client_id": "300814322402-82gqcb4dte5m2tv1dr2imsf0u7regk87.apps.googleusercontent.com",
|
||||
"client_id": "468878476620-v3rqr1b2bta862r6q974csuc3rq917ni.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyAIXzIwPy-023B3sbDQv42LaxXaSnJcWmU"
|
||||
"current_key": "AIzaSyB7o8KiFwABvfyYubdWTcjpm3Y6ciCrO1I"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"analytics_service": {
|
||||
"status": 1
|
||||
},
|
||||
"appinvite_service": {
|
||||
"status": 1,
|
||||
"other_platform_oauth_client": []
|
||||
},
|
||||
"ads_service": {
|
||||
"status": 2
|
||||
"other_platform_oauth_client": [
|
||||
{
|
||||
"client_id": "468878476620-v3rqr1b2bta862r6q974csuc3rq917ni.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
},
|
||||
{
|
||||
"client_id": "468878476620-dn0mrhcve5jjpfst3u1vlm4k00uackb6.apps.googleusercontent.com",
|
||||
"client_type": 2,
|
||||
"ios_info": {
|
||||
"bundle_id": "th.co.csasset.mobile",
|
||||
"app_store_id": "1455804320"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
}
|
||||
}
|
||||
|
BIN
android/app/release/app-release.aab
Normal file
@ -4,5 +4,10 @@
|
||||
|
||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
|
||||
|
||||
<application android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" />
|
||||
<application android:usesCleartextTraffic="true"
|
||||
tools:targetApi="28"
|
||||
tools:ignore="GoogleAppIndexingWarning"
|
||||
>
|
||||
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" android:exported="false" />
|
||||
</application>
|
||||
</manifest>
|
||||
|
@ -0,0 +1,75 @@
|
||||
/**
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* <p>This source code is licensed under the MIT license found in the LICENSE file in the root
|
||||
* directory of this source tree.
|
||||
*/
|
||||
package com.csareactrn60;
|
||||
|
||||
import android.content.Context;
|
||||
import com.facebook.flipper.android.AndroidFlipperClient;
|
||||
import com.facebook.flipper.android.utils.FlipperUtils;
|
||||
import com.facebook.flipper.core.FlipperClient;
|
||||
import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin;
|
||||
import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin;
|
||||
import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin;
|
||||
import com.facebook.flipper.plugins.inspector.DescriptorMapping;
|
||||
import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin;
|
||||
import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;
|
||||
import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;
|
||||
import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;
|
||||
import com.facebook.react.ReactInstanceEventListener;
|
||||
import com.facebook.react.ReactInstanceManager;
|
||||
import com.facebook.react.bridge.ReactContext;
|
||||
import com.facebook.react.modules.network.NetworkingModule;
|
||||
import okhttp3.OkHttpClient;
|
||||
|
||||
/**
|
||||
* Class responsible of loading Flipper inside your React Native application. This is the debug
|
||||
* flavor of it. Here you can add your own plugins and customize the Flipper setup.
|
||||
*/
|
||||
public class ReactNativeFlipper {
|
||||
public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
|
||||
if (FlipperUtils.shouldEnableFlipper(context)) {
|
||||
final FlipperClient client = AndroidFlipperClient.getInstance(context);
|
||||
|
||||
client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()));
|
||||
client.addPlugin(new DatabasesFlipperPlugin(context));
|
||||
client.addPlugin(new SharedPreferencesFlipperPlugin(context));
|
||||
client.addPlugin(CrashReporterPlugin.getInstance());
|
||||
|
||||
NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
|
||||
NetworkingModule.setCustomClientBuilder(
|
||||
new NetworkingModule.CustomClientBuilder() {
|
||||
@Override
|
||||
public void apply(OkHttpClient.Builder builder) {
|
||||
builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
|
||||
}
|
||||
});
|
||||
client.addPlugin(networkFlipperPlugin);
|
||||
client.start();
|
||||
|
||||
// Fresco Plugin needs to ensure that ImagePipelineFactory is initialized
|
||||
// Hence we run if after all native modules have been initialized
|
||||
ReactContext reactContext = reactInstanceManager.getCurrentReactContext();
|
||||
if (reactContext == null) {
|
||||
reactInstanceManager.addReactInstanceEventListener(
|
||||
new ReactInstanceEventListener() {
|
||||
@Override
|
||||
public void onReactContextInitialized(ReactContext reactContext) {
|
||||
reactInstanceManager.removeReactInstanceEventListener(this);
|
||||
reactContext.runOnNativeModulesQueueThread(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
client.addPlugin(new FrescoFlipperPlugin());
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
client.addPlugin(new FrescoFlipperPlugin());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,12 +1,16 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="th.co.csasset.mobile">
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.VIBRATE"/>
|
||||
<uses-permission android:name="android.permission.CAMERA"/>
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
|
||||
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION"/>
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.VIBRATE"/>
|
||||
<uses-feature android:name="android.hardware.camera" android:required="false" />
|
||||
<uses-feature android:name="android.hardware.camera.front" android:required="false" />
|
||||
|
||||
@ -21,24 +25,27 @@
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:label="@string/app_name"
|
||||
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
|
||||
android:windowSoftInputMode="adjustResize">
|
||||
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
|
||||
android:windowSoftInputMode="adjustResize"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/>
|
||||
<service android:name="io.invertase.firebase.messaging.RNFirebaseMessagingService">
|
||||
<!-- <service android:name="io.invertase.firebase.messaging.RNFirebaseMessagingService"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
|
||||
</intent-filter>
|
||||
</service>
|
||||
<service android:name="io.invertase.firebase.messaging.RNFirebaseInstanceIdService">
|
||||
<service android:name="io.invertase.firebase.messaging.RNFirebaseInstanceIdService"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
|
||||
</intent-filter>
|
||||
</service>
|
||||
</service> -->
|
||||
<meta-data android:name="com.facebook.sdk.ApplicationId"
|
||||
android:value="@string/facebook_app_id"/>
|
||||
<activity android:name="com.facebook.FacebookActivity"
|
||||
|
@ -1,7 +1,10 @@
|
||||
package th.co.csasset.mobile;
|
||||
package com.csareactrn60;
|
||||
|
||||
import com.facebook.react.ReactActivity;
|
||||
import org.devio.rn.splashscreen.SplashScreen;
|
||||
import com.facebook.react.ReactActivityDelegate;
|
||||
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;
|
||||
import com.facebook.react.defaults.DefaultReactActivityDelegate;
|
||||
|
||||
public class MainActivity extends ReactActivity {
|
||||
|
||||
@ -15,4 +18,18 @@ public class MainActivity extends ReactActivity {
|
||||
|
||||
return "csareactrn60";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link
|
||||
* DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React
|
||||
* (aka React 18) with two boolean flags.
|
||||
*/
|
||||
@Override
|
||||
protected ReactActivityDelegate createReactActivityDelegate() {
|
||||
return new DefaultReactActivityDelegate(
|
||||
this,
|
||||
getMainComponentName(),
|
||||
// If you opted-in for the New Architecture, we enable the Fabric Renderer.
|
||||
DefaultNewArchitectureEntryPoint.getFabricEnabled());
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package th.co.csasset.mobile;
|
||||
package com.csareactrn60;
|
||||
|
||||
import android.app.Application;
|
||||
import android.util.Log;
|
||||
@ -9,15 +9,16 @@ import com.facebook.react.bridge.JavaScriptExecutorFactory;
|
||||
import com.facebook.react.ReactApplication;
|
||||
import com.facebook.react.ReactNativeHost;
|
||||
import com.facebook.react.ReactPackage;
|
||||
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;
|
||||
import com.facebook.react.defaults.DefaultReactNativeHost;
|
||||
import com.facebook.soloader.SoLoader;
|
||||
import com.learnium.RNDeviceInfo.RNDeviceInfo;
|
||||
|
||||
import com.reactnativecommunity.cameraroll.CameraRollPackage;
|
||||
import com.csareactrn60.BuildConfig;
|
||||
|
||||
// Firebase
|
||||
import io.invertase.firebase.messaging.RNFirebaseMessagingPackage;
|
||||
import io.invertase.firebase.notifications.RNFirebaseNotificationsPackage;
|
||||
import io.invertase.firebase.config.RNFirebaseRemoteConfigPackage;
|
||||
//import io.invertase.firebase.messaging.RNFirebaseMessagingPackage;
|
||||
//import io.invertase.firebase.notifications.RNFirebaseNotificationsPackage;
|
||||
//import io.invertase.firebase.config.RNFirebaseRemoteConfigPackage;
|
||||
|
||||
import com.facebook.reactnative.androidsdk.FBSDKPackage;
|
||||
|
||||
@ -25,7 +26,7 @@ import java.util.List;
|
||||
|
||||
public class MainApplication extends Application implements ReactApplication {
|
||||
|
||||
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
|
||||
private final ReactNativeHost mReactNativeHost = new DefaultReactNativeHost(this) {
|
||||
@Override
|
||||
public boolean getUseDeveloperSupport() {
|
||||
return BuildConfig.DEBUG;
|
||||
@ -37,9 +38,9 @@ public class MainApplication extends Application implements ReactApplication {
|
||||
List<ReactPackage> packages = new PackageList(this).getPackages();
|
||||
// Packages that cannot be autolinked yet can be added manually here, for example:
|
||||
// packages.add(new MyReactNativePackage());
|
||||
packages.add(new RNFirebaseNotificationsPackage());
|
||||
packages.add(new RNFirebaseMessagingPackage());
|
||||
packages.add(new RNFirebaseRemoteConfigPackage());
|
||||
// packages.add(new RNFirebaseNotificationsPackage());
|
||||
// packages.add(new RNFirebaseMessagingPackage());
|
||||
// packages.add(new RNFirebaseRemoteConfigPackage());
|
||||
return packages;
|
||||
}
|
||||
|
||||
@ -47,6 +48,16 @@ public class MainApplication extends Application implements ReactApplication {
|
||||
protected String getJSMainModuleName() {
|
||||
return "index";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isNewArchEnabled() {
|
||||
return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Boolean isHermesEnabled() {
|
||||
return BuildConfig.IS_HERMES_ENABLED;
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
|
36
android/app/src/main/res/drawable/rn_edit_text_material.xml
Normal file
@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2014 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<inset xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:insetLeft="@dimen/abc_edit_text_inset_horizontal_material"
|
||||
android:insetRight="@dimen/abc_edit_text_inset_horizontal_material"
|
||||
android:insetTop="@dimen/abc_edit_text_inset_top_material"
|
||||
android:insetBottom="@dimen/abc_edit_text_inset_bottom_material">
|
||||
|
||||
<selector>
|
||||
<!--
|
||||
This file is a copy of abc_edit_text_material (https://bit.ly/3k8fX7I).
|
||||
The item below with state_pressed="false" and state_focused="false" causes a NullPointerException.
|
||||
NullPointerException:tempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)'
|
||||
|
||||
<item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
|
||||
|
||||
For more info, see https://bit.ly/3CdLStv (react-native/pull/29452) and https://bit.ly/3nxOMoR.
|
||||
-->
|
||||
<item android:state_enabled="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
|
||||
<item android:drawable="@drawable/abc_textfield_activated_mtrl_alpha"/>
|
||||
</selector>
|
||||
|
||||
</inset>
|
@ -3,7 +3,7 @@
|
||||
<!-- Base application theme. -->
|
||||
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
|
||||
<!-- Customize your theme here. -->
|
||||
<item name="android:textColor">#000000</item>
|
||||
<item name="android:editTextBackground">@drawable/rn_edit_text_material</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
|
20
android/app/src/release/java/ReactNativeFlipper.java
Normal file
@ -0,0 +1,20 @@
|
||||
/**
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* <p>This source code is licensed under the MIT license found in the LICENSE file in the root
|
||||
* directory of this source tree.
|
||||
*/
|
||||
package com.csareactrn60;
|
||||
|
||||
import android.content.Context;
|
||||
import com.facebook.react.ReactInstanceManager;
|
||||
|
||||
/**
|
||||
* Class responsible of loading Flipper inside your React Native application. This is the release
|
||||
* flavor of it so it's empty as we don't want to load Flipper.
|
||||
*/
|
||||
public class ReactNativeFlipper {
|
||||
public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
|
||||
// Do nothing as we don't want to initialize Flipper on Release.
|
||||
}
|
||||
}
|
@ -1,43 +1,29 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
def REACT_NATIVE_VERSION = new File(['node', '--print',"JSON.parse(require('fs').readFileSync(require.resolve('react-native/package.json'), 'utf-8')).version"].execute(null, rootDir).text.trim())
|
||||
|
||||
buildscript {
|
||||
ext {
|
||||
googlePlayServiceVersion = "17.0.0"
|
||||
buildToolsVersion = "28.0.3"
|
||||
buildToolsVersion = "33.0.0"
|
||||
minSdkVersion = 21
|
||||
compileSdkVersion = 28
|
||||
targetSdkVersion = 28
|
||||
kotlinVersion = "1.9.0"
|
||||
compileSdkVersion = 33
|
||||
targetSdkVersion = 33
|
||||
reactNativeVersion = "0.72.6"
|
||||
|
||||
// We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP.
|
||||
ndkVersion = "23.1.7779620"
|
||||
}
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
jcenter()
|
||||
maven { url 'https://www.jitpack.io' }
|
||||
}
|
||||
dependencies {
|
||||
classpath("com.android.tools.build:gradle:3.4.1")
|
||||
classpath 'com.google.gms:google-services:4.2.0'
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
mavenLocal()
|
||||
maven {
|
||||
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
|
||||
url("$rootDir/../node_modules/react-native/android")
|
||||
}
|
||||
maven {
|
||||
// Android JSC is installed from npm
|
||||
url("$rootDir/../node_modules/jsc-android/dist")
|
||||
}
|
||||
|
||||
google()
|
||||
jcenter()
|
||||
|
||||
maven { url 'https://maven.google.com' }
|
||||
maven { url "https://jitpack.io" }
|
||||
// classpath("com.android.tools.build:gradle:8.0.2")
|
||||
classpath("com.android.tools.build:gradle")
|
||||
classpath("com.facebook.react:react-native-gradle-plugin")
|
||||
classpath 'com.google.gms:google-services:4.4.2'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
|
||||
}
|
||||
}
|
||||
|
@ -1,26 +1,39 @@
|
||||
# Project-wide Gradle settings.
|
||||
|
||||
# IDE (e.g. Android Studio) users:
|
||||
# Gradle settings configured through the IDE *will override*
|
||||
# any settings specified in this file.
|
||||
|
||||
# For more details on how to configure your build environment visit
|
||||
## For more details on how to configure your build environment visit
|
||||
# http://www.gradle.org/docs/current/userguide/build_environment.html
|
||||
|
||||
#
|
||||
# Specifies the JVM arguments used for the daemon process.
|
||||
# The setting is particularly useful for tweaking memory settings.
|
||||
# Default value: -Xmx10248m -XX:MaxPermSize=256m
|
||||
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
|
||||
|
||||
# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m
|
||||
# org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
|
||||
#
|
||||
# When configured, Gradle will run in incubating parallel mode.
|
||||
# This option should only be used with decoupled projects. More details, visit
|
||||
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||
# org.gradle.parallel=true
|
||||
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
|
||||
#Tue Jul 11 21:56:44 ICT 2023
|
||||
MYAPP_RELEASE_STORE_FILE=charoensin.release.keystore
|
||||
MYAPP_RELEASE_KEY_ALIAS=charoensin
|
||||
MYAPP_RELEASE_KEY_PASSWORD=aabbccddee
|
||||
org.gradle.jvmargs=-Xmx2048M -Dkotlin.daemon.jvm.options\="-Xmx2048M"
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
MYAPP_RELEASE_STORE_PASSWORD=aabbccddee
|
||||
MYAPP_RELEASE_KEY_PASSWORD=aabbccddee
|
||||
|
||||
# Version of flipper SDK to use with React Native
|
||||
FLIPPER_VERSION=0.182.0
|
||||
|
||||
# Use this property to specify which architecture you want to build.
|
||||
# You can also override it from the CLI using
|
||||
# ./gradlew <task> -PreactNativeArchitectures=x86_64
|
||||
reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
|
||||
|
||||
# Use this property to enable support to the new architecture.
|
||||
# This will allow you to use TurboModules and the Fabric render in
|
||||
# your application. You should enable this flag either if you want
|
||||
# to write custom TurboModules/Fabric components OR use libraries that
|
||||
# are providing them.
|
||||
newArchEnabled=false
|
||||
|
||||
# Use this property to enable or disable the Hermes JS engine.
|
||||
# If set to false, you will be using JSC instead.
|
||||
hermesEnabled=true
|
@ -1,5 +1,7 @@
|
||||
#Wed Nov 01 15:44:40 ICT 2023
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-all.zip
|
||||
networkTimeout=10000
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.5-all.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
278
android/gradlew
vendored
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env sh
|
||||
#!/bin/sh
|
||||
|
||||
#
|
||||
# Copyright 2015 the original author or authors.
|
||||
# Copyright © 2015-2021 the original authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@ -17,67 +17,100 @@
|
||||
#
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
## Gradle start up script for UN*X
|
||||
##
|
||||
#
|
||||
# Gradle start up script for POSIX generated by Gradle.
|
||||
#
|
||||
# Important for running:
|
||||
#
|
||||
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
|
||||
# noncompliant, but you have some other compliant shell such as ksh or
|
||||
# bash, then to run this script, type that shell name before the whole
|
||||
# command line, like:
|
||||
#
|
||||
# ksh Gradle
|
||||
#
|
||||
# Busybox and similar reduced shells will NOT work, because this script
|
||||
# requires all of these POSIX shell features:
|
||||
# * functions;
|
||||
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
|
||||
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
|
||||
# * compound commands having a testable exit status, especially «case»;
|
||||
# * various built-in commands including «command», «set», and «ulimit».
|
||||
#
|
||||
# Important for patching:
|
||||
#
|
||||
# (2) This script targets any POSIX shell, so it avoids extensions provided
|
||||
# by Bash, Ksh, etc; in particular arrays are avoided.
|
||||
#
|
||||
# The "traditional" practice of packing multiple parameters into a
|
||||
# space-separated string is a well documented source of bugs and security
|
||||
# problems, so this is (mostly) avoided, by progressively accumulating
|
||||
# options in "$@", and eventually passing that to Java.
|
||||
#
|
||||
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
|
||||
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
|
||||
# see the in-line comments for details.
|
||||
#
|
||||
# There are tweaks for specific operating systems such as AIX, CygWin,
|
||||
# Darwin, MinGW, and NonStop.
|
||||
#
|
||||
# (3) This script is generated from the Groovy template
|
||||
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# within the Gradle project.
|
||||
#
|
||||
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
# Need this for relative symlinks.
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
fi
|
||||
app_path=$0
|
||||
|
||||
# Need this for daisy-chained symlinks.
|
||||
while
|
||||
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
|
||||
[ -h "$app_path" ]
|
||||
do
|
||||
ls=$( ls -ld "$app_path" )
|
||||
link=${ls#*' -> '}
|
||||
case $link in #(
|
||||
/*) app_path=$link ;; #(
|
||||
*) app_path=$APP_HOME$link ;;
|
||||
esac
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
# This is normally unused
|
||||
# shellcheck disable=SC2034
|
||||
APP_BASE_NAME=${0##*/}
|
||||
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
MAX_FD=maximum
|
||||
|
||||
warn () {
|
||||
echo "$*"
|
||||
}
|
||||
} >&2
|
||||
|
||||
die () {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
} >&2
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
nonstop=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
NONSTOP* )
|
||||
nonstop=true
|
||||
;;
|
||||
case "$( uname )" in #(
|
||||
CYGWIN* ) cygwin=true ;; #(
|
||||
Darwin* ) darwin=true ;; #(
|
||||
MSYS* | MINGW* ) msys=true ;; #(
|
||||
NONSTOP* ) nonstop=true ;;
|
||||
esac
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
@ -86,9 +119,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
JAVACMD=$JAVA_HOME/jre/sh/java
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
JAVACMD=$JAVA_HOME/bin/java
|
||||
fi
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||
@ -97,7 +130,7 @@ Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD="java"
|
||||
JAVACMD=java
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
@ -105,80 +138,105 @@ location of your Java installation."
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
MAX_FD="$MAX_FD_LIMIT"
|
||||
fi
|
||||
ulimit -n $MAX_FD
|
||||
if [ $? -ne 0 ] ; then
|
||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
||||
fi
|
||||
else
|
||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||
fi
|
||||
fi
|
||||
|
||||
# For Darwin, add options to specify how the application appears in the dock
|
||||
if $darwin; then
|
||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||
SEP=""
|
||||
for dir in $ROOTDIRSRAW ; do
|
||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
||||
SEP="|"
|
||||
done
|
||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
||||
# Add a user-defined pattern to the cygpath arguments
|
||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
||||
fi
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
i=0
|
||||
for arg in "$@" ; do
|
||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||
|
||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=$((i+1))
|
||||
done
|
||||
case $i in
|
||||
(0) set -- ;;
|
||||
(1) set -- "$args0" ;;
|
||||
(2) set -- "$args0" "$args1" ;;
|
||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||
case $MAX_FD in #(
|
||||
max*)
|
||||
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC3045
|
||||
MAX_FD=$( ulimit -H -n ) ||
|
||||
warn "Could not query maximum file descriptor limit"
|
||||
esac
|
||||
case $MAX_FD in #(
|
||||
'' | soft) :;; #(
|
||||
*)
|
||||
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC3045
|
||||
ulimit -n "$MAX_FD" ||
|
||||
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||
esac
|
||||
fi
|
||||
|
||||
# Escape application args
|
||||
save () {
|
||||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||
echo " "
|
||||
}
|
||||
APP_ARGS=$(save "$@")
|
||||
# Collect all arguments for the java command, stacking in reverse order:
|
||||
# * args from the command line
|
||||
# * the main class name
|
||||
# * -classpath
|
||||
# * -D...appname settings
|
||||
# * --module-path (only if needed)
|
||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
|
||||
|
||||
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if "$cygwin" || "$msys" ; then
|
||||
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
||||
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
|
||||
JAVACMD=$( cygpath --unix "$JAVACMD" )
|
||||
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
for arg do
|
||||
if
|
||||
case $arg in #(
|
||||
-*) false ;; # don't mess with options #(
|
||||
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
|
||||
[ -e "$t" ] ;; #(
|
||||
*) false ;;
|
||||
esac
|
||||
then
|
||||
arg=$( cygpath --path --ignore --mixed "$arg" )
|
||||
fi
|
||||
# Roll the args list around exactly as many times as the number of
|
||||
# args, so each arg winds up back in the position where it started, but
|
||||
# possibly modified.
|
||||
#
|
||||
# NB: a `for` loop captures its iteration list before it begins, so
|
||||
# changing the positional parameters here affects neither the number of
|
||||
# iterations, nor the values presented in `arg`.
|
||||
shift # remove old arg
|
||||
set -- "$@" "$arg" # push replacement arg
|
||||
done
|
||||
fi
|
||||
|
||||
# Collect all arguments for the java command;
|
||||
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
|
||||
# shell script including quotes and variable substitutions, so put them in
|
||||
# double quotes to make sure that they get re-expanded; and
|
||||
# * put everything else in single quotes, so that it's not re-expanded.
|
||||
|
||||
set -- \
|
||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||
-classpath "$CLASSPATH" \
|
||||
org.gradle.wrapper.GradleWrapperMain \
|
||||
"$@"
|
||||
|
||||
# Stop when "xargs" is not available.
|
||||
if ! command -v xargs >/dev/null 2>&1
|
||||
then
|
||||
die "xargs is not available"
|
||||
fi
|
||||
|
||||
# Use "xargs" to parse quoted args.
|
||||
#
|
||||
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
||||
#
|
||||
# In Bash we could simply go:
|
||||
#
|
||||
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
|
||||
# set -- "${ARGS[@]}" "$@"
|
||||
#
|
||||
# but POSIX shell has neither arrays nor command substitution, so instead we
|
||||
# post-process each arg (as a line of input to sed) to backslash-escape any
|
||||
# character that might be a shell metacharacter, then use eval to reverse
|
||||
# that process (while maintaining the separation between arguments), and wrap
|
||||
# the whole thing up as a single "set" statement.
|
||||
#
|
||||
# This will of course break if any of these variables contains a newline or
|
||||
# an unmatched quote.
|
||||
#
|
||||
|
||||
eval "set -- $(
|
||||
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
|
||||
xargs -n1 |
|
||||
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
|
||||
tr '\n' ' '
|
||||
)" '"$@"'
|
||||
|
||||
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
|
||||
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
|
||||
|
11
android/gradlew.bat
vendored
@ -26,6 +26,7 @@ if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
@rem This is normally unused
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@ -37,7 +38,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
if %ERRORLEVEL% equ 0 goto execute
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
@ -86,13 +87,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||
if %ERRORLEVEL% equ 0 goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||
exit /b 1
|
||||
set EXIT_CODE=%ERRORLEVEL%
|
||||
if %EXIT_CODE% equ 0 set EXIT_CODE=1
|
||||
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
|
||||
exit /b %EXIT_CODE%
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
BIN
android/java_pid37388.hprof
Normal file
@ -1,7 +1,25 @@
|
||||
pluginManagement {
|
||||
repositories {
|
||||
gradlePluginPortal()
|
||||
google()
|
||||
mavenCentral()
|
||||
}
|
||||
plugins {
|
||||
id("com.facebook.react") version("0.72.6")
|
||||
}
|
||||
}
|
||||
|
||||
rootProject.name = 'charoensin'
|
||||
|
||||
include ':react-native-webview'
|
||||
project(':react-native-webview').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-webview/android')
|
||||
|
||||
include ':react-native-device-info'
|
||||
project(':react-native-device-info').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-device-info/android')
|
||||
|
||||
include ':react-native-fbsdk'
|
||||
project(':react-native-fbsdk').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-fbsdk/android')
|
||||
|
||||
apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
|
||||
include ':app'
|
||||
includeBuild('../node_modules/@react-native/gradle-plugin')
|
||||
include ':app'
|
BIN
assets/images/appointment_repair.png
Normal file
After Width: | Height: | Size: 579 B |
BIN
assets/images/invoice_icon.png
Normal file
After Width: | Height: | Size: 675 B |
BIN
assets/images/invoice_overdue_icon.png
Normal file
After Width: | Height: | Size: 702 B |
BIN
assets/images/logo_5.png
Normal file
After Width: | Height: | Size: 549 KiB |
BIN
assets/images/meter_icon.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
assets/images/meter_noti_image.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
assets/images/radio_button.png
Normal file
After Width: | Height: | Size: 487 B |
BIN
assets/images/radio_button_checked.png
Normal file
After Width: | Height: | Size: 575 B |
BIN
assets/images/repair_noti.png
Normal file
After Width: | Height: | Size: 574 B |
BIN
assets/images/star_grey.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
assets/images/star_rating.png
Normal file
After Width: | Height: | Size: 590 B |
BIN
assets/images/star_yellow.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
assets/images/success_repair.png
Normal file
After Width: | Height: | Size: 669 B |
@ -1,3 +1,6 @@
|
||||
export default {
|
||||
API_BASE_URL: 'https://app.csasset.co.th/mobile',
|
||||
API_BASE_URL_PROD: 'https://app.csasset.co.th/mobile',
|
||||
WEB_BASE_URL_PROD: 'https://app.csasset.co.th',
|
||||
API_BASE_URL_DEV: 'https://csa-test.bda.co.th/mobile',
|
||||
WEB_BASE_URL_DEV: 'https://csa-test.bda.co.th',
|
||||
}
|
||||
|
11
ios/.xcode.env
Normal file
@ -0,0 +1,11 @@
|
||||
# This `.xcode.env` file is versioned and is used to source the environment
|
||||
# used when running script phases inside Xcode.
|
||||
# To customize your local environment, you can create an `.xcode.env.local`
|
||||
# file that is not versioned.
|
||||
|
||||
# NODE_BINARY variable contains the PATH to the node executable.
|
||||
#
|
||||
# Customize the NODE_BINARY variable here.
|
||||
# For example, to use nvm with brew, add the following line
|
||||
# . "$(brew --prefix nvm)/nvm.sh" --no-use
|
||||
export NODE_BINARY=$(command -v node)
|
3
ios/Gemfile
Normal file
@ -0,0 +1,3 @@
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "fastlane"
|
65
ios/Podfile
@ -1,51 +1,32 @@
|
||||
platform :ios, '9.0'
|
||||
require_relative '../node_modules/react-native/scripts/react_native_pods'
|
||||
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
|
||||
platform :ios, '13.0'
|
||||
|
||||
xcodeproj 'csareactrn60'
|
||||
|
||||
target 'csareactrn60' do
|
||||
# Pods for csareactrn60
|
||||
pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
|
||||
pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"
|
||||
pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired"
|
||||
pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety"
|
||||
pod 'React', :path => '../node_modules/react-native/'
|
||||
pod 'React-Core', :path => '../node_modules/react-native/'
|
||||
pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules'
|
||||
pod 'React-Core/DevSupport', :path => '../node_modules/react-native/'
|
||||
pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
|
||||
pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
|
||||
pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
|
||||
pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
|
||||
pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
|
||||
pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
|
||||
pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
|
||||
pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
|
||||
pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
|
||||
pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/'
|
||||
config = use_native_modules!
|
||||
|
||||
pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
|
||||
pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
|
||||
pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
|
||||
pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
|
||||
pod 'ReactCommon/jscallinvoker', :path => "../node_modules/react-native/ReactCommon"
|
||||
pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon"
|
||||
pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
|
||||
use_react_native!(
|
||||
:path => config[:reactNativePath],
|
||||
# to enable hermes on iOS, change `false` to `true` and then install pods
|
||||
:hermes_enabled => false
|
||||
)
|
||||
|
||||
pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
|
||||
pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
|
||||
pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
|
||||
|
||||
pod 'react-native-fbsdk', :path => '../node_modules/react-native-fbsdk'
|
||||
pod 'RNVectorIcons', :path => '../node_modules/react-native-vector-icons'
|
||||
# Enables Flipper.
|
||||
#
|
||||
# Note that if you have use_frameworks! enabled, Flipper will not work and
|
||||
# you should disable the next line.
|
||||
|
||||
pod 'FBSDKCoreKit'
|
||||
pod 'FBSDKLoginKit'
|
||||
pod 'FBSDKShareKit'
|
||||
# use_flipper!()
|
||||
|
||||
#Firebase
|
||||
pod 'Firebase/Messaging', '~> 6.8.0'
|
||||
# post_install do |installer|
|
||||
# react_native_post_install(installer)
|
||||
# end
|
||||
|
||||
pod 'react-native-view-shot', :path => '../node_modules/react-native-view-shot'
|
||||
pod 'RNImageCropPicker', :path => '../node_modules/react-native-image-crop-picker'
|
||||
|
||||
use_native_modules!
|
||||
end
|
||||
pod 'Firebase', :modular_headers => true
|
||||
pod 'FirebaseCoreInternal', :modular_headers => true
|
||||
pod 'FirebaseCore', :modular_headers => true
|
||||
pod 'GoogleUtilities', :modular_headers => true
|
||||
end
|
1100
ios/Podfile.lock
37
ios/PrivacyInfo.xcprivacy
Normal file
@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPITypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPIType</key>
|
||||
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
|
||||
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||
<array>
|
||||
<string>C617.1</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPIType</key>
|
||||
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
|
||||
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||
<array>
|
||||
<string>CA92.1</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPIType</key>
|
||||
<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
|
||||
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||
<array>
|
||||
<string>35F9.1</string>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<key>NSPrivacyCollectedDataTypes</key>
|
||||
<array/>
|
||||
<key>NSPrivacyTracking</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
5
ios/assets/app.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"name": "csareactrn60",
|
||||
"displayName": "csareactrn60",
|
||||
"orientation": "portrait"
|
||||
}
|
1
ios/assets/assets/icons/selection.json
Normal file
BIN
ios/assets/assets/images/Ellipse2.png
Normal file
After Width: | Height: | Size: 374 B |
BIN
ios/assets/assets/images/GroupCheck.png
Normal file
After Width: | Height: | Size: 4.0 KiB |
BIN
ios/assets/assets/images/appointment_repair.png
Normal file
After Width: | Height: | Size: 579 B |
BIN
ios/assets/assets/images/check.png
Normal file
After Width: | Height: | Size: 758 B |
BIN
ios/assets/assets/images/default_big.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
ios/assets/assets/images/default_small.png
Normal file
After Width: | Height: | Size: 750 B |
BIN
ios/assets/assets/images/icon_fb.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
ios/assets/assets/images/icon_payment.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
ios/assets/assets/images/icon_promptpay.png
Normal file
After Width: | Height: | Size: 8.4 KiB |
BIN
ios/assets/assets/images/invoice_icon.png
Normal file
After Width: | Height: | Size: 675 B |
BIN
ios/assets/assets/images/invoice_overdue_icon.png
Normal file
After Width: | Height: | Size: 702 B |
BIN
ios/assets/assets/images/locale_en.png
Normal file
After Width: | Height: | Size: 8.9 KiB |
BIN
ios/assets/assets/images/locale_km.png
Normal file
After Width: | Height: | Size: 8.4 KiB |
BIN
ios/assets/assets/images/locale_my.png
Normal file
After Width: | Height: | Size: 8.1 KiB |
BIN
ios/assets/assets/images/locale_th.png
Normal file
After Width: | Height: | Size: 7.5 KiB |
BIN
ios/assets/assets/images/logo_2.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
ios/assets/assets/images/logo_5.png
Normal file
After Width: | Height: | Size: 549 KiB |
BIN
ios/assets/assets/images/logo_white_border.png
Normal file
After Width: | Height: | Size: 240 KiB |
BIN
ios/assets/assets/images/map.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
ios/assets/assets/images/meter_icon.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
ios/assets/assets/images/meter_noti_image.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
ios/assets/assets/images/praw.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
ios/assets/assets/images/profile.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
ios/assets/assets/images/repair_noti.png
Normal file
After Width: | Height: | Size: 574 B |
BIN
ios/assets/assets/images/star_grey.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
ios/assets/assets/images/star_yellow.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
ios/assets/assets/images/success_repair.png
Normal file
After Width: | Height: | Size: 669 B |
BIN
ios/assets/assets/images/tree2.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
ios/assets/assets/images/tree_border.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
ios/assets/assets/images/zone_map.png
Normal file
After Width: | Height: | Size: 2.9 MiB |
202
ios/assets/src/translations/en.json
Normal file
@ -0,0 +1,202 @@
|
||||
{
|
||||
"search_project": "Search Projects",
|
||||
"id_card_existed": "ID No. is already registered.",
|
||||
"mobile_existed": "Phone No. is already registered.",
|
||||
"invalid_room_no": "Room No. is invalid.",
|
||||
"id_card_not_existed": "ID No. is not found in Database.",
|
||||
"email_not_exist_please_signup": "Email :email is not registered. Please register first.",
|
||||
"data_invalid": "Invalid Data",
|
||||
"invalid_mobile_number": "Invaid Phone No.",
|
||||
"update_read_success": "update read notification success",
|
||||
"project_not_found'": "Project is not found.",
|
||||
"room_not_found": "Room is not found.",
|
||||
"require": ":attribute field is required.",
|
||||
"have_outstanding_balance": "You have an outstanding balance.",
|
||||
"no_outstanding_balance_yet": "You have no outstanding balance.",
|
||||
"view_more": "View Details",
|
||||
"view_points": "View Points",
|
||||
"point": "Point",
|
||||
"redeem": "Redeem",
|
||||
"mail_and_parcel": "Mail and Parcel",
|
||||
"request_repair": "Request for Repair",
|
||||
"inquire": "Inquire",
|
||||
"latest_news": "News",
|
||||
"ดู momentjs": "43935",
|
||||
"outstanding_balance_detail": "Details of outstanding balance",
|
||||
"no_outstanding_balance": "No outstanding balance",
|
||||
"save_water_meter": "Water Meter",
|
||||
"save_electric_meter": "Electricity Meter",
|
||||
"electric_unit": "Electricity Bill",
|
||||
"unit": "Unit",
|
||||
"unit_price": "Unit Price",
|
||||
"amount": "Amount",
|
||||
"baht": "Baht",
|
||||
"request_repair_and_Other": "Request for Repair & Other Services",
|
||||
"place_choose_service": "Please choose a service.",
|
||||
"other_service": "Other Services",
|
||||
"call_for_service": "Call for services",
|
||||
"repair_history": "Repair History",
|
||||
"no_repair_history": "No Repair History",
|
||||
"confirm_info": "Confirm Information",
|
||||
"make_appoint": "Make Appointment",
|
||||
"date": "Date",
|
||||
"time": "Time",
|
||||
"information": "Information",
|
||||
"confirm": "Confirm",
|
||||
"send_confirmation": "Sending Confirmation",
|
||||
"send_confirm": "Confirm to Send",
|
||||
"cancel": "Cancel",
|
||||
"ok": "OK",
|
||||
"request_sent": "Request sent",
|
||||
"room": "Room",
|
||||
"status": "Status",
|
||||
"pending": "Pending",
|
||||
"estimate_charge": "Estimate the service charge",
|
||||
"back_home": "Back to Home",
|
||||
"faqs": "FAQs",
|
||||
"me": "Me",
|
||||
"project": "Project",
|
||||
"message": "Message",
|
||||
"submit_data": "Submit data",
|
||||
"submit_area_from_map": "Select Area from Map",
|
||||
"news": "News",
|
||||
"products": "Products",
|
||||
"service": "Services",
|
||||
"search_proect": "Search Projects",
|
||||
"baht_month": "Baht/month",
|
||||
"view_details": "View Details",
|
||||
"phone": "Phone No.",
|
||||
"address": "Address",
|
||||
"room_detail": "Room details",
|
||||
"month": "Month",
|
||||
"detail": "Details",
|
||||
"book_room": "Book a room",
|
||||
"individual": "Individual",
|
||||
"corporate": "Corporate",
|
||||
"profile": "Profile",
|
||||
"fullname": "Full Name",
|
||||
"specific_fullname": "Specify the full name",
|
||||
"email": "Email",
|
||||
"specific_email": "Specify an email",
|
||||
"phone2": "Phone No.",
|
||||
"specific_phone": "Specify a phone number",
|
||||
"gender_mf": "Gender Male/Female",
|
||||
"birth_date": "Date of Birth",
|
||||
"select_date": "Select date",
|
||||
"expect_checkin": "Expected check-in date",
|
||||
"company_name": "Company Name",
|
||||
"specific_company": "Specify a company name",
|
||||
"tax_id": "Tax ID No.",
|
||||
"specific_tax_id": "Specify 13-digit Tax ID No.",
|
||||
"booking_submit": "Submit booking information",
|
||||
"booking_confirm": "Confirm Booking",
|
||||
"booking_success": "Submit booking information successfully",
|
||||
"close": "Close",
|
||||
"product_detail": "Product Details",
|
||||
"request_repair_other": "Request for Repair & Other Services",
|
||||
"notification": "Notification",
|
||||
"suggestion": "Suggestion",
|
||||
"logout": "Log out",
|
||||
"citizen_id": "ID No.",
|
||||
"edit_profile": "Edit personal information",
|
||||
"accom_info": "Accommodation Information",
|
||||
"building": "Building",
|
||||
"room2": "Room",
|
||||
"room_no": "Room No.",
|
||||
"change_password": "Change Password",
|
||||
"new_password": "New Password",
|
||||
"enter_new_password": "Enter a new password",
|
||||
"confirm_password": "Confirm New Password",
|
||||
"enter_confirm_password": "Enter a new password to confirm",
|
||||
"complete": "Complete",
|
||||
"noti_setting": "Notification Settings",
|
||||
"news2": "News",
|
||||
"promotion": "Promotion",
|
||||
"parcel_list": "List of Parcels",
|
||||
"payment_due": "Payment due",
|
||||
"write_suggest": "Write Suggestions",
|
||||
"photo": "Photo",
|
||||
"logout_confirm": "Do you want to log out?",
|
||||
"charoensin_asset": "Charoensin Asset",
|
||||
"for_csa_customer": "For Charoensin Asset's customers only",
|
||||
"create_account": "Create an account",
|
||||
"or": "Or",
|
||||
"login": "Login",
|
||||
"login_facebook": "Log in with Facebook",
|
||||
"term_condition": "Terms and Conditions",
|
||||
"not_agree": "Not Agree",
|
||||
"agree": "Agree",
|
||||
"register": "Create an account",
|
||||
"next": "Next",
|
||||
"not_a_member": "You are not a member?",
|
||||
"gender": "Gender",
|
||||
"male": "Male",
|
||||
"female": "Female",
|
||||
"citizen_id_13": "Citizen ID",
|
||||
"water_bill": "Water Bill",
|
||||
"password": "password",
|
||||
"confirm_password_only": "Confirm Password",
|
||||
"outstanding_balance": "Outstanding Balance",
|
||||
"rating": "Rating",
|
||||
"name": "Name",
|
||||
"category": "Category",
|
||||
"individual2": "Individual",
|
||||
"zone": "Zone",
|
||||
"accommodation": "Accommodation",
|
||||
"connect_facebook": "Connect with Facebook",
|
||||
"choose_project": "Choose Project",
|
||||
"room_for_rent": "Room for Rent",
|
||||
"scan_to_pay": "Scan code for payment",
|
||||
"account_name": "Account Name",
|
||||
"account": "Account",
|
||||
"ref_no": "Reference Number",
|
||||
"total_payment": "Total Payment Amount",
|
||||
"support_all_bank": "Support every bank",
|
||||
"save": "Save",
|
||||
"coporate": "Corporate",
|
||||
"new_room": "New Room",
|
||||
"please_pay_before": "Please pay before",
|
||||
"please_pay_within": "Please make payment within the date",
|
||||
"begin_charge_on" : "Overdue charge date",
|
||||
"to_view_outstanding_balance": "to see the outstanding balance",
|
||||
"no_mail_parcel": "You don't have any mails or parcels",
|
||||
"no_notification": "You don't have any notifications",
|
||||
"no_product": "You don't have any products",
|
||||
"smart_meter": "Smart Meter",
|
||||
"no_water_electric_bill": "You don't have any water or electric bill",
|
||||
"receive_code": "Receive confirmation code",
|
||||
"pay": "Pay",
|
||||
"please_sign": "Please sign here",
|
||||
"redeem_reward": "Claim your reward",
|
||||
"service_detail": "Service details",
|
||||
"confirmation_code": "Confirmation code",
|
||||
"consignee": "Consignee",
|
||||
"waiting_for_pickup": "Waiting for pickup",
|
||||
"contact_front_desk": "Contact front desk",
|
||||
"awaiting_payment": "Awaiting payment",
|
||||
"paid": "Paid",
|
||||
"latest_promotion": "New Promotion",
|
||||
"disconnect_facebook": "Disconnect Facebook",
|
||||
"register_success": "Register Success",
|
||||
"repair_history_detail": "History Detail",
|
||||
"repair_inprogress": "In Progress",
|
||||
"repair_re_appoint": "Re Appointment",
|
||||
"repair_success": "Success",
|
||||
"customer": "Customer",
|
||||
"guest": "Guest",
|
||||
"other": "Other",
|
||||
"clear_signature": "clear",
|
||||
"signature": "Signature",
|
||||
"save_signature": "Save",
|
||||
"save_success": "Save Success",
|
||||
"save_fail_and_try": "Unsuccess, Try again",
|
||||
"new_parcel": "New Parcel",
|
||||
"customer_not_found": "Data not found.",
|
||||
"new_message": "New Message",
|
||||
"bill_payment": "Bill Payment",
|
||||
"meter_noti": "Electric Meter",
|
||||
"title": "Title",
|
||||
"update_app": "Update Application",
|
||||
"payment_success": "Payment Success",
|
||||
"delete_account": "Delete Account"
|
||||
}
|
198
ios/assets/src/translations/km.json
Normal file
@ -0,0 +1,198 @@
|
||||
{
|
||||
"search_project": "ស្វែងរកគំរោង",
|
||||
"id_card_existed": "លេខលិខិតឆ្លងដែនបានប្រើ",
|
||||
"mobile_existed": "លេខទូរសព្ទបានប្រើ",
|
||||
"invalid_room_no": "លេខបន្ទប់មិនត្រឹមត្រូវ ។",
|
||||
"id_card_not_existed": "រកមិនឃើញលេខលិខិតឆ្លងដែននៅក្នុងឃ្លាំងទិន្នន័យ។",
|
||||
"email_not_exist_please_signup": "អ៊ីមែល :email មិនត្រូវបានចុះឈ្មោះក្នុងប្រព័ន្ធទេសូមចុះឈ្មោះ។",
|
||||
"data_invalid": "ព័ត៌មានមិនត្រឹមត្រូវ",
|
||||
"invalid_mobile_number": "លេខទូរស័ព្ទមិនត្រឹមត្រូវ។",
|
||||
"update_read_success": "ធ្វើឱ្យទាន់សម័យបានអានទទួលបានជោគជ័យជូនដំណឹង។",
|
||||
"project_not_found'": "រកមិនឃើញគម្រោង។",
|
||||
"room_not_found": "រកមិនឃើញបន្ទប់។",
|
||||
"require": "សូមបញ្ចូលព័ត៌មាន : attribute ។",
|
||||
"have_outstanding_balance": "មានតុល្យភាពលេចធ្លោ។",
|
||||
"no_outstanding_balance_yet": "មិនមានតុល្យភាពលេចធ្លោ។",
|
||||
"view_more": "ព័ត៌មានបន្ថែម។",
|
||||
"view_points": "ពិន្ទុរង្វាន់",
|
||||
"point": "ពិន្ទុ",
|
||||
"redeem": "ចំណុចផ្លាស់ប្តូរ",
|
||||
"mail_and_parcel": "ស្មាតម៉ែត្រ",
|
||||
"request_repair": "ជូនដំណឹងសម្រាប់ការជួសជុល។",
|
||||
"inquire": "ទាក់ទងមកពួកយើង",
|
||||
"latest_news": "ព័ត៌មានថ្មី",
|
||||
"ดู momentjs": "ថ្ងៃទី ១៤ ខែ មេសា ឆ្នាំ ២០២០",
|
||||
"outstanding_balance_detail": "ព័ត៌មានលម្អិតអំពីសមតុល្យលេចធ្លោ",
|
||||
"no_outstanding_balance": "មិនមានតុល្យភាពលេចធ្លោ។",
|
||||
"save_water_meter": "វិក័យប័ត្រទឹក",
|
||||
"save_electric_meter": "វិក័យប័ត្រអគ្គិសនី",
|
||||
"electric_unit": "បរិមាណអគ្គិសនី",
|
||||
"unit": "បរិមាណ",
|
||||
"unit_price": "ឯកតា",
|
||||
"amount": "ចំនួនទឹកប្រាក់",
|
||||
"baht": "បាត",
|
||||
"request_repair_and_Other": "ជូនដំណឹងសម្រាប់ការជួសជុល & សេវាកម្មផ្សេងទៀត",
|
||||
"place_choose_service": "សូមជ្រើសរើសសេវាកម្មដែលចង់បាន។",
|
||||
"other_service": "សេវាកម្មផ្សេងទៀត",
|
||||
"call_for_service": "សេវាកម្មជូនដំណឹង",
|
||||
"repair_history": "បញ្ជីប្រវត្តិ",
|
||||
"no_repair_history": "គ្មានប្រវត្តិជួសជុលទេ",
|
||||
"confirm_info": "បញ្ជាក់ព័ត៌មានធាតុ",
|
||||
"make_appoint": "ការតែងតាំង",
|
||||
"date": "ថ្ងៃទី",
|
||||
"time": "ពេលវេលាណាត់ជួប",
|
||||
"information": "ព័ត៌មានអំពីធាតុ",
|
||||
"confirm": "បញ្ជាក់",
|
||||
"send_confirmation": "ផ្ញើព័ត៌មានធាតុ",
|
||||
"send_confirm": "បញ្ជាក់ការបញ្ជូនព័ត៌មានធាតុ",
|
||||
"cancel": "ដើម្បីបោះបង់",
|
||||
"ok": "យល់ព្រម",
|
||||
"request_sent": "សេវាកម្មដែលបានជូនដំណឹង",
|
||||
"room": "បន្ទប់",
|
||||
"status": "ស្ថានភាព",
|
||||
"pending": "រង់ចាំ",
|
||||
"estimate_charge": "ថ្លៃសេវាកម្មប៉ាន់ស្មាន",
|
||||
"back_home": "ត្រលប់ទៅទំព័រមេវិញ",
|
||||
"faqs": "សំណួរ - ចម្លើយ",
|
||||
"me": "ខ្ញុំ",
|
||||
"project": "គម្រោង",
|
||||
"message": "ប៍តមាន",
|
||||
"submit_data": "ផ្ញើព័ត៌មាន",
|
||||
"submit_area_from_map": "ជ្រើសរើសតំបន់ពីផែនទី។",
|
||||
"news": "ព័ត៌មាន",
|
||||
"products": "ផលិតផល",
|
||||
"service": "សេវាកម្ម",
|
||||
"search_proect": "ស្វែងរកគំរោង",
|
||||
"baht_month": "បាត / ខែ",
|
||||
"view_details": "មើលព័ត៌មានលម្អិត",
|
||||
"phone": "លេខទូរស័ព្ទ",
|
||||
"address": "អាសយដ្ឋាន",
|
||||
"room_detail": "ព័ត៌មានលម្អិតបន្ទប់",
|
||||
"month": "ខែ",
|
||||
"detail": "ព័ត៌មានលម្អិត",
|
||||
"book_room": "កក់បន្ទប់",
|
||||
"individual": "បុគ្គល",
|
||||
"corporate": "នីតិបុគ្គល",
|
||||
"profile": "ព័ត៌មានផ្ទាល់ខ្លួន",
|
||||
"fullname": "ឈ្មោះ - នាមត្រកូល",
|
||||
"specific_fullname": "បញ្ជាក់ឈ្មោះនិងនាមត្រកូល",
|
||||
"email": "អ៊ីមែល",
|
||||
"specific_email": "បញ្ជាក់អ៊ីមែល",
|
||||
"phone2": "លេខទូរស័ព្ទ",
|
||||
"specific_phone": "បញ្ជាក់លេខទូរស័ព្ទ",
|
||||
"gender_mf": "ភេទ: បុរស/ស្រី",
|
||||
"birth_date": "ថ្ងៃទី/ខែ/ឆ្នាំកំណើត",
|
||||
"select_date": "ជ្រើសរើសកាលបរិច្ឆេទ",
|
||||
"expect_checkin": "កាលបរិច្ឆេទនៃការស្នាក់នៅរំពឹងទុក",
|
||||
"company_name": "ឈ្មោះក្រុមហ៊ុន",
|
||||
"specific_company": "បញ្ជាក់ឈ្មោះក្រុមហ៊ុន",
|
||||
"tax_id": "លេខសម្គាល់ពន្ធ",
|
||||
"specific_tax_id": "បញ្ជាក់ ១៣ ខ្ទង់",
|
||||
"booking_submit": "ផ្ញើព័ត៌មានកក់",
|
||||
"booking_confirm": "ការបញ្ជាក់ពីការកក់",
|
||||
"booking_success": "ព័ត៌មាននៃការកក់ត្រូវបានផ្ញើដោយជោគជ័យ។",
|
||||
"close": "បិទ",
|
||||
"product_detail": "ព័ត៌មានលម្អិតអំពីផលិតផល",
|
||||
"request_repair_other": "ជូនដំណឹងអំពីការជួសជុលនិងសេវាកម្ម",
|
||||
"notification": "ការជូនដំណឹង",
|
||||
"suggestion": "សំណូមពរ",
|
||||
"logout": "ចេញ",
|
||||
"citizen_id": "លេខអត្តសញ្ញាណប័ណ្ណ",
|
||||
"edit_profile": "កែសម្រួលព័ត៌មានផ្ទាល់ខ្លួន",
|
||||
"accom_info": "ព័ត៌មានអំពីការស្នាក់នៅ",
|
||||
"building": "អគារ",
|
||||
"room2": "បន្ទប់",
|
||||
"room_no": "លេខបន្ទប់",
|
||||
"change_password": "កែលេខសម្ងាត់",
|
||||
"new_password": "ពាក្យសម្ងាត់ថ្មី",
|
||||
"enter_new_password": "បញ្ចូលពាក្យសម្ងាត់ថ្មី",
|
||||
"confirm_password": "បញ្ជាក់ពាក្យសម្ងាត់ថ្មី",
|
||||
"enter_confirm_password": "បញ្ចូលពាក្យសម្ងាត់ថ្មីដើម្បីបញ្ជាក់។",
|
||||
"complete": "បានបញ្ចប់",
|
||||
"noti_setting": "រៀបចំការជូនដំណឹង",
|
||||
"news2": "ព័ត៌មាន",
|
||||
"promotion": "ផសបវផសាយ",
|
||||
"parcel_list": "បញ្ជីផលិតផល",
|
||||
"payment_due": "ទូទាត់សមតុល្យ",
|
||||
"write_suggest": "សំណូមពរ",
|
||||
"photo": "រូបភាព",
|
||||
"logout_confirm": "តើអ្នកចង់ចេញ?",
|
||||
"charoensin_asset": "Charoen Sin Asset",
|
||||
"for_csa_customer": "សម្រាប់អតិថិជនក្រុមហ៊ុន",
|
||||
"create_account": "ចុះឈ្មោះនៅទីនេះ",
|
||||
"or": "ឬ",
|
||||
"login": "ចូល",
|
||||
"login_facebook": "ចូលជាមួយ Facebook",
|
||||
"term_condition": "កិច្ចព្រមព្រៀងនិងលក្ខខណ្ឌ",
|
||||
"not_agree": "មិនយល់ព្រម",
|
||||
"agree": "យល់ព្រម",
|
||||
"register": "ចុះឈ្មោះ",
|
||||
"next": "ក្រោយ",
|
||||
"not_a_member": "មិនមែនជាសមាជិកនៅឡើយទេ?",
|
||||
"gender": "ភេទ",
|
||||
"male": "បុរស",
|
||||
"female": "ស្រី",
|
||||
"citizen_id_13": "លេខសម្គាល់ពលរដ្ឋ",
|
||||
"water_bill": "ថ្លៃប្រើប្រាស់ទឹកស្អាត",
|
||||
"password": "ការពាក្យសម្ងាត់",
|
||||
"confirm_password_only": "អះអាងពាក្យសម្ងាត់",
|
||||
"outstanding_balance": "សមតុល្យឆ្នើម",
|
||||
"rating": "ការផ្តល់ចំណាត់ថ្នាក់",
|
||||
"name": "ឈ្មោះ",
|
||||
"category": "ប្រភេទ",
|
||||
"individual2": "បុគគល",
|
||||
"zone": "តំបន់",
|
||||
"accommodation": "ការស្នាក់នៅ",
|
||||
"connect_facebook": "ភ្ជាប់ជាមួយហ្វេសប៊ុក",
|
||||
"choose_project": "ជ្រើសគម្រោង",
|
||||
"room_for_rent": "បន្ទប់សម្រាប់ជួល",
|
||||
"scan_to_pay": "ស្កេនកូដសម្រាប់ការទូទាត់",
|
||||
"account_name": "ឈ្មោះគណនី",
|
||||
"account": "គណនី",
|
||||
"ref_no": "លេខយោង",
|
||||
"total_payment": "ចំនួនទឹកប្រាក់ទូទាត់សរុប",
|
||||
"support_all_bank": "គាំទ្រដល់ធនាគារជារៀងរាល់",
|
||||
"save": "រក្សាទុក",
|
||||
"coporate": "សហការ",
|
||||
"new_room": "បន្ទប់ថ្មី",
|
||||
"please_pay_before": "សូមយកចិត្តមុនពេល",
|
||||
"to_view_outstanding_balance": "ដើម្បីមើលឃើញសមតុល្យដែលលេចធ្លោ",
|
||||
"no_mail_parcel": "អ្នកមិនមានសំបុត្រឬក្បាលដីណាមួយ",
|
||||
"no_notification": "អ្នកមិនមានការជូនដំណឹងណាមួយឡើយ",
|
||||
"no_product": "អ្នកមិនមានផលិតផលណាមួយ",
|
||||
"smart_meter": "Smart Meter",
|
||||
"no_water_electric_bill": "អ្នកមិនមានវិក័យប័ត្រទឹកឬអគ្គិសនី",
|
||||
"receive_code": "ទទួលបានលេខកូដការបញ្ជាក់",
|
||||
"pay": "បង់",
|
||||
"please_sign": "សូមចុះហត្ថលេខានៅទីនេះ",
|
||||
"redeem_reward": "ទាមទារយករង្វាន់របស់អ្នក",
|
||||
"service_detail": "ព័ត៌មានលម្អិតសេវាកម្ម",
|
||||
"confirmation_code": "កូដបញ្ជាក់ទទួលស្គាល់",
|
||||
"consignee": "អ្នកទទួលទំនិញ",
|
||||
"waiting_for_pickup": "កំពុងរង់ចាំភីកអាប់",
|
||||
"contact_front_desk": "តុមានទំនាក់ទំនងមុខ",
|
||||
"awaiting_payment": "រង់ចាំការទូទាត់ប្រាក់",
|
||||
"paid": "បង់ប្រាក់",
|
||||
"latest_promotion": "លើកកម្ពស់ថ្មី",
|
||||
"disconnect_facebook": "ផ្តាច់ហ្វេសប៊ុក",
|
||||
"register_success": "ចុះឈ្មោះទទួលបានជោគជ័យ",
|
||||
"repair_history_detail": "History Detail",
|
||||
"repair_inprogress": "In Progress",
|
||||
"repair_re_appoint": "Re Appointment",
|
||||
"repair_success": "Success",
|
||||
"customer": "Customer",
|
||||
"guest": "Guest",
|
||||
"other": "Other",
|
||||
"clear_signature": "clear",
|
||||
"signature": "Signature",
|
||||
"save_signature": "រក្សាទុក",
|
||||
"save_success": "Save Success",
|
||||
"save_fail_and_try": "Unsuccess, Try again",
|
||||
"new_parcel": "New Parcel",
|
||||
"customer_not_found": "Data not found.",
|
||||
"new_message": "New Message",
|
||||
"bill_payment": "Bill Payment",
|
||||
"meter_noti": "Electric Meter",
|
||||
"title": "Title",
|
||||
"delete_account": "Delete Account"
|
||||
}
|
198
ios/assets/src/translations/my.json
Normal file
@ -0,0 +1,198 @@
|
||||
{
|
||||
"search_project": "စီမံကိန္းမ်ား ရွာေဖြမည္",
|
||||
"id_card_existed": "အသုံးျပဳခဲ့ၿပီးေသာ ႏုိင္ငံကူးလက္မွတ္နံပါတ္ျဖစ္သည္",
|
||||
"mobile_existed": "အသုံးျပဳခဲ့ၿပီးေသာ ဖုန္းနံပါတ္ျဖစ္သည္",
|
||||
"invalid_room_no": "အခန္းနံပါတ္ မမွန္ကန္ပါ",
|
||||
"id_card_not_existed": "အခ်က္အလက္မွာ ႏုိင္ငံကူးလက္မွတ္ရွာမေတြ႕ပါ",
|
||||
"email_not_exist_please_signup": "အီးေမး မွတ္ပုံမတင္ရေသးပါ ေက်းဇူးျပဳ၍ အသင္း၀င္ရန္ေလွ်ာက္ထားပါ",
|
||||
"data_invalid": "အခ်က္အလက္မွန္ကန္မႈမရိွပါ",
|
||||
"invalid_mobile_number": "ဖုန္းေမာ္ဒယ္နံပါတ္ မွန္ကန္မႈမရိွပါ",
|
||||
"update_read_success": "",
|
||||
"project_not_found'": "စီမံကိန္း မေတြ႕ပါ",
|
||||
"room_not_found": "အခန္းမေတြ႕ပါ",
|
||||
"require": "ေက်းဇူးျပဳ၍ :attribute အခ်က္အလက္ထည့္သြင္းပါ",
|
||||
"have_outstanding_balance": "သင္ ေငြေပးသြင္းရန္က်န္ရိွေသးသည္",
|
||||
"no_outstanding_balance_yet": "ေငြေပးသြင္းရန္ မရိွပါ",
|
||||
"view_more": "ထပ္မံၾကည့္ရွဳရန္",
|
||||
"view_points": "စုေပါင္းအမွတ္",
|
||||
"point": "အမွတ္",
|
||||
"redeem": "အမွတ္လဲလွယ္ရန္",
|
||||
"mail_and_parcel": "မက္ေဆ့ခ်္ႏွင့္ ကုန္စည္",
|
||||
"request_repair": "ျပင္ဆင္မႈအတြက္ အေၾကာင္းၾကားျခင္း",
|
||||
"inquire": "ေမးျမန္းရန္",
|
||||
"latest_news": "သတင္းအသစ္",
|
||||
"ดู momentjs": "14-04-63",
|
||||
"outstanding_balance_detail": "ေငြေပးရန္က်န္ရိွသည့္ အေသးစိတ္",
|
||||
"no_outstanding_balance": "ေငြထပ္မံေပးသြင္းရန္ မရိွပါ",
|
||||
"save_water_meter": "ေရခမွတ္တမ္း",
|
||||
"save_electric_meter": "မီးခမွတ္တမ္း",
|
||||
"electric_unit": "မီးခ",
|
||||
"unit": "စုေပါင္း",
|
||||
"unit_price": "ယူနစ္",
|
||||
"amount": "စုေပါင္းေငြ",
|
||||
"baht": "ဘတ္",
|
||||
"request_repair_and_Other": "ျပင္ဆင္ျခင္းႏွင့္ အျခား၀န္ေဆာင္မႈအမ်ဳိးမ်ဳိး အေၾကာင္းၾကားပါ",
|
||||
"place_choose_service": "ေက်းဇူးျပဳ၍ ၀န္ေဆာင္မႈေရြးခ်ယ္ပါ",
|
||||
"other_service": "၀န္ေဆာင္မႈအမ်ဳိးမ်ဳိး",
|
||||
"call_for_service": "၀န္ေဆာင္မႈကုိ အေၾကာင္းၾကားပါ",
|
||||
"repair_history": "စာရင္းသမုိင္း",
|
||||
"no_repair_history": "ျပဳျပင္မႈ စာရင္းသမုိင္းမရိွပါ",
|
||||
"confirm_info": "စာရင္းအခ်က္အလက္ကုိ အတည္ျပဳပါ",
|
||||
"make_appoint": "ခ်ိန္းထားသည့္အခ်ိန္",
|
||||
"date": "ရက္စြဲ",
|
||||
"time": "ခ်ိန္းထားအခ်ိန္",
|
||||
"information": "အခ်က္အလက္အေၾကာင္း",
|
||||
"confirm": "အတည္ျပဳမည္",
|
||||
"send_confirmation": "သတင္းအခ်က္အလက္ ေပးပုိ႔မည္",
|
||||
"send_confirm": "သတင္းအခ်က္အလက္ ေပးပုိ႔အတည္ျပဳမည္",
|
||||
"cancel": "ပယ္ဖ်က္မည္",
|
||||
"ok": "အုိေက",
|
||||
"request_sent": "၀န္ေဆာင္မႈ အသိေပးၿပီးၿပီ",
|
||||
"room": "အခန္း",
|
||||
"status": "အေျခအေန",
|
||||
"pending": "ေစာင့္ဆုိင္းေနသည္",
|
||||
"estimate_charge": "၀န္ေဆာင္မႈအခေၾကး ခန္႔မွန္းခ်က္",
|
||||
"back_home": "ပင္မစာမ်က္ႏွာသုိ႔ ျပန္သြားမည္",
|
||||
"faqs": "အေမး-အေျဖ",
|
||||
"me": "က်ေနာ္",
|
||||
"project": "စီမံကိန္း",
|
||||
"message": "မက္ေဆ့ခ်္",
|
||||
"submit_data": "မက္ေဆ့ခ်္ပုိ႔မည္",
|
||||
"submit_area_from_map": "ေျမပုံမွ ေနရာေဒသကုိေရြးမည္",
|
||||
"news": "သတင္း",
|
||||
"products": "ထုတ္ကုန္",
|
||||
"service": "၀န္ေဆာင္မႈ",
|
||||
"search_proect": "စီမံကိန္းမ်ား ရွာေဖြမည္",
|
||||
"baht_month": "ဘတ္/လ",
|
||||
"view_details": "အေသးစိတ္ၾကည့္ရွဳရန္",
|
||||
"phone": "ဖုန္းနံပါတ္",
|
||||
"address": "လိပ္စာ",
|
||||
"room_detail": "အခန္းအေသးစိတ္",
|
||||
"month": "လ",
|
||||
"detail": "အေသးစိတ္",
|
||||
"book_room": "အခန္းဘြတ္ကင္လုပ္မည္",
|
||||
"individual": "သာမန္လူပုဂၢဳိလ္",
|
||||
"corporate": "ေကာ္ပုိေရးရွင္း",
|
||||
"profile": "ကုိယ္ေရးမွတ္တမ္း",
|
||||
"fullname": "အမည္-မ်ဳိးရုိးနာမည္",
|
||||
"specific_fullname": "အမည္ႏွင့္မ်ဳိးရုိးနာမည္ ျဖည့္ပါ",
|
||||
"email": "အီးေမး",
|
||||
"specific_email": "အီးေမး ျဖည့္ပါ",
|
||||
"phone2": "ဖုန္းနံပါတ္",
|
||||
"specific_phone": "ဖုန္းနံပါတ္ ျဖည့္ပါ",
|
||||
"gender_mf": "လိင္ က်ား ၊ မ",
|
||||
"birth_date": "ေမြးရက္/လ/ခုႏွစ္",
|
||||
"select_date": "ရက္စြဲေရြးပါ",
|
||||
"expect_checkin": "နားေနမည့္ရက္",
|
||||
"company_name": "ကုမၸဏီနာမည္",
|
||||
"specific_company": "ကုမၸဏီနာမည္ ျဖည့္ပါ",
|
||||
"tax_id": "အခြန္ေဆာင္သူမွတ္ပုံတင္နံပါတ္",
|
||||
"specific_tax_id": "မွတ္ပုံတင္နံပါတ္ 13 လုံး ျဖည့္ပါ",
|
||||
"booking_submit": "ဘြတ္ကင္အခ်က္အလက္ ပုိ႔ပါ",
|
||||
"booking_confirm": "ဘြတ္ကင္အတည္ျပဳပါ",
|
||||
"booking_success": "ဘြတ္ကင္ ေအာင္ျမင္ပါသည္",
|
||||
"close": "ပိတ္မည္",
|
||||
"product_detail": "ထုတ္ကုန္အေသးစိတ္အေၾကာင္း",
|
||||
"request_repair_other": "ျပင္ဆင္ျခင္းႏွင့္ အျခား၀န္ေဆာင္မႈအမ်ဳိးမ်ဳိး အေၾကာင္းၾကားပါ",
|
||||
"notification": "အသိေပးခ်က္",
|
||||
"suggestion": "အႀကံျပဳခ်က္",
|
||||
"logout": "အေကာင့္မွ ထြက္မည္",
|
||||
"citizen_id": "မွတ္ပုံတင္နံပါတ္",
|
||||
"edit_profile": "ကုိယ္ေရးမွတ္တမ္း ျပင္ဆင္မည္",
|
||||
"accom_info": "တည္းခုိမည့္ေနရာအခ်က္အလက္",
|
||||
"building": "တုိက္",
|
||||
"room2": "အခန္း",
|
||||
"room_no": "အခန္းနံပါတ္",
|
||||
"change_password": "လွ်ဳိ႕၀ွက္နံပါတ္ေျပာင္းလဲမည္",
|
||||
"new_password": "လွ်ဳိ႕၀ွက္နံပါတ္အသစ္",
|
||||
"enter_new_password": "လွ်ဳိ႕၀ွက္နံပါတ္အသစ္ ျဖည့္မည္",
|
||||
"confirm_password": "လွ်ဳိ႕၀ွက္နံပါတ္အသစ္ အတည္ျပဳ",
|
||||
"enter_confirm_password": "အတည္ျပဳရန္ လွ်ဳိ႕၀ွက္နံပါတ္အသစ္ ျဖည့္ပါ",
|
||||
"complete": "ၿပီးၿပီ",
|
||||
"noti_setting": "အသိေပးရန္ သတ္မွတ္ခ်က္မ်ားျပဳလုပ္မည္",
|
||||
"news2": "သတင္းအေၾကာင္းအရာ",
|
||||
"promotion": "ပရုိမုိးရွင္း",
|
||||
"parcel_list": "ကုန္စည္စာရင္း",
|
||||
"payment_due": "ေငြေပးသြင္းရန္ အခ်ိန္ေရာက္ၿပီ",
|
||||
"write_suggest": "အႀကံျပဳခ်က္မ်ား ေရးသားပါ",
|
||||
"photo": "ဓါတ္ပုံ",
|
||||
"logout_confirm": "သင္သည္ အေကာင့္မွ ထြက္မည္ဟုတ္မဟုတ္ ?",
|
||||
"charoensin_asset": "က်လိန္းဆင္အက္ဆက္",
|
||||
"for_csa_customer": "က်လိန္းဆင္အက္ဆက္ကုမၸဏီ၏ ေဖါက္သည္မ်ားအတြက္",
|
||||
"create_account": "ဤေနရာတြင္ အသင္း၀င္ ေလွ်ာက္ထားပါ",
|
||||
"or": "သုိ႔မဟုတ္",
|
||||
"login": "အေကာင့္ထဲ ၀င္မည္",
|
||||
"login_facebook": "Facebook ကုိ အသုံးျပဳ၍ ၀င္မည္",
|
||||
"term_condition": "အေျခအေနႏွင့္ သေဘာတူညီခ်က္မ်ား",
|
||||
"not_agree": "လက္မခံပါ",
|
||||
"agree": "လက္ခံသည္",
|
||||
"register": "အသင္း၀င္ေလွ်ာက္ထားပါ",
|
||||
"next": "ဆက္သြားပါ",
|
||||
"not_a_member": "သင္သည္ အသင္း၀င္သူမဟုတ္ေသးပါ ဟုတ္လား ?",
|
||||
"gender": "ကျား, မ",
|
||||
"male": "အထီး",
|
||||
"female": "အမြိုးသမီး",
|
||||
"citizen_id_13": "နိုင်ငံသား ID ကို",
|
||||
"water_bill": "ရေဘီလ်",
|
||||
"password": "စကားဝှက်ကို",
|
||||
"confirm_password_only": "စကားဝှက်ကိုအတည်ပြုပါ",
|
||||
"outstanding_balance": "ထူးချွန်ချိန်ခွင်လျှာ",
|
||||
"rating": "rating",
|
||||
"name": "အမည်",
|
||||
"category": "အမျိုးအစား",
|
||||
"individual2": "တစ်ဦးချင်း",
|
||||
"zone": "ဇုန်",
|
||||
"accommodation": "နေရာထိုင်ခင်း",
|
||||
"connect_facebook": "Facebook နှင့်ဆက်သွယ်ပါ",
|
||||
"choose_project": "စီမံကိန်းရွေးပါ",
|
||||
"room_for_rent": "အခန်းငှားရန်",
|
||||
"scan_to_pay": "အခန်းငှားရန်",
|
||||
"account_name": "အကောင့်နာမည်",
|
||||
"account": "အကောင့်",
|
||||
"ref_no": "ကိုးကားစရာအရေအတွက်",
|
||||
"total_payment": "စုစုပေါင်းငွေပေးချေမှုရမည့်ငွေပမာဏ",
|
||||
"support_all_bank": "တိုင်းဘဏ်ကိုထောကျပံ့",
|
||||
"save": "သိမ်းဆည်းပါ",
|
||||
"coporate": "ဥပဒေရေးရာပုဂ္ဂိုလ်သတင်းအချက်အလက်",
|
||||
"new_room": "အခန်းအသစ်",
|
||||
"please_pay_before": "မတိုင်မှီပေးဆောင် ကျေးဇူးပြု.",
|
||||
"to_view_outstanding_balance": "အဆိုပါထူးချွန်ချိန်ခွင်လျှာကြည့်ဖို့",
|
||||
"no_mail_parcel": "သင်သည်မည်သည့်မေးလ်သို့မဟုတ်ချောထုပ်ရှိသည်မဟုတ်ကြဘူး",
|
||||
"no_notification": "သင်သည်မည်သည့်အကြောင်းကြားစာများရှိသည်မဟုတ်ကြဘူး",
|
||||
"no_product": "သင်သည်မည်သည့်ထုတ်ကုန်ရှိသည်မဟုတ်ကြဘူး",
|
||||
"smart_meter": "Smart Meter",
|
||||
"no_water_electric_bill": "သင်သည်မည်သည့်ရေသို့မဟုတ်လျှပ်စစ်ဥပဒေကြမ်းရှိသည်မဟုတ်ကြဘူး",
|
||||
"receive_code": "အတည်ပြုချက်ကိုကုဒ်လက်ခံရရှိ",
|
||||
"pay": "ပေးဆောင်",
|
||||
"please_sign": "ကျေးဇူးပြုပြီးဒီမှာလက်မှတ်ထိုးပါ",
|
||||
"redeem_reward": "မင်းရဲ့ဆုကိုတောင်းခံပါ",
|
||||
"service_detail": "ဝန်ဆောင်မှုအသေးစိတ်",
|
||||
"confirmation_code": "အတည်ပြုသည့်ကုတ်",
|
||||
"consignee": "အခကြေးငွေ",
|
||||
"waiting_for_pickup": "ပစ်ကပ်ဘို့စောင့်ဆိုင်းနေ",
|
||||
"contact_front_desk": "ဆက်သွယ်ရန်ရှေ့စားပွဲပေါ်မှာ",
|
||||
"awaiting_payment": "ငွေပေးချေမှုစောင့်ဆိုင်း",
|
||||
"paid": "ပေးဆောင်သည်",
|
||||
"latest_promotion": "နယူးမြှင့်တင်ရေး",
|
||||
"disconnect_facebook": "အဆက်ဖြုတ် Facebook က",
|
||||
"register_success": "မှတ်ပုံတင်မည်အောင်မြင်",
|
||||
"repair_history_detail": "History Detail",
|
||||
"repair_inprogress": "In Progress",
|
||||
"repair_re_appoint": "Re Appointment",
|
||||
"repair_success": "Success",
|
||||
"customer": "Customer",
|
||||
"guest": "Guest",
|
||||
"other": "Other",
|
||||
"clear_signature": "clear",
|
||||
"signature": "Signature",
|
||||
"save_signature": "သိမ်းဆည်းပါ",
|
||||
"save_success": "Save Success",
|
||||
"save_fail_and_try": "Unsuccess, Try again",
|
||||
"new_parcel": "New Parcel",
|
||||
"customer_not_found": "Data not found.",
|
||||
"new_message": "New Message",
|
||||
"bill_payment": "Bill Payment",
|
||||
"meter_noti": "Electric Meter",
|
||||
"title": "Title",
|
||||
"delete_account": "Delete Account"
|
||||
}
|
202
ios/assets/src/translations/th.json
Normal file
@ -0,0 +1,202 @@
|
||||
{
|
||||
"search_project": "ค้นหาโครงการ",
|
||||
"id_card_existed": "หมายเลขบัตรประชาชนใช้ลงทะเบียนไปแล้ว",
|
||||
"mobile_existed": "หมายเลขโทรศัพท์ใช้ลงทะเบียนไปแล้ว",
|
||||
"invalid_room_no": "หมายเลขห้องพักไม่ถูกต้อง",
|
||||
"id_card_not_existed": "ไม่พบหมายเลขบัตรประชาชนในฐานข้อมูล",
|
||||
"email_not_exist_please_signup": "อีเมล์ :email ยังไม่ได้ลงทะเบียนในระบบ กรุณาสมัครสมาชิก",
|
||||
"data_invalid": "ข้อมูลไม่ถูกต้อง",
|
||||
"invalid_mobile_number": "หมายเลขเครื่องโทรศัพท์ไม่ถูกต้อง",
|
||||
"update_read_success": "อ่านแล้ว",
|
||||
"project_not_found'": "ไม่พบโครงการ",
|
||||
"room_not_found": "ไม่พบห้องพัก",
|
||||
"require": "กรุณาใส่ข้อมูล :attribute",
|
||||
"have_outstanding_balance": "คุณมียอดค้างชำระ",
|
||||
"no_outstanding_balance_yet": "ยังไม่มียอดค้างชำระ",
|
||||
"view_more": "ดูเพิ่มเติม",
|
||||
"view_points": "คะแนนสะสม",
|
||||
"point": "พอยต์",
|
||||
"redeem": "แลกคะแนน",
|
||||
"mail_and_parcel": "จดหมายและพัสดุ",
|
||||
"request_repair": "แจ้งซ่อม",
|
||||
"inquire": "สอบถาม",
|
||||
"latest_news": "ข่าวใหม่",
|
||||
"ดู momentjs": "14 เม.ษ. 2563",
|
||||
"outstanding_balance_detail": "รายละเอียดยอดค้างชำระ",
|
||||
"no_outstanding_balance": "ไม่มียอดค้างชำระ",
|
||||
"save_water_meter": "บันทึกค่าน้ำ",
|
||||
"save_electric_meter": "บันทึกค่าไฟ",
|
||||
"electric_unit": "ค่าไฟ",
|
||||
"unit": "จำนวน",
|
||||
"unit_price": "หน่วย",
|
||||
"amount": "จำนวนเงิน",
|
||||
"baht": "บาท",
|
||||
"request_repair_and_Other": "แจ้งซ่อม & บริการอื่นๆ",
|
||||
"place_choose_service": "กรุณาเลือกบริการที่ต้องการ",
|
||||
"other_service": "บริการอื่นๆ",
|
||||
"call_for_service": "แจ้งใช้บริการ",
|
||||
"repair_history": "ประวัติรายการ",
|
||||
"no_repair_history": "ไม่มีประวัติรายการซ่อม",
|
||||
"confirm_info": "ยืนยันข้อมูลรายการ",
|
||||
"make_appoint": "นัดหมายเวลา",
|
||||
"date": "วันที่",
|
||||
"time": "เวลานัด",
|
||||
"information": "ข้อมูลรายการ",
|
||||
"confirm": "ยืนยัน",
|
||||
"send_confirmation": "ส่งข้อมูลรายการ",
|
||||
"send_confirm": "ยืนยันการส่งข้อมูลรายการ",
|
||||
"cancel": "ยกเลิก",
|
||||
"ok": "ตกลง",
|
||||
"request_sent": "แจ้งบริการเรียบร้อย",
|
||||
"room": "ห้อง",
|
||||
"status": "สถานะ",
|
||||
"pending": "รอดำเนินการ",
|
||||
"estimate_charge": "ประเมินค่าบริการ",
|
||||
"back_home": "กลับหน้าหลัก",
|
||||
"faqs": "ถาม - ตอบ",
|
||||
"me": "ฉัน",
|
||||
"project": "โครงการ",
|
||||
"message": "ข้อความ",
|
||||
"submit_data": "ส่งข้อมูล",
|
||||
"submit_area_from_map": "เลือกเขตจากแผนที่",
|
||||
"news": "ข่าว",
|
||||
"products": "สินค้า",
|
||||
"service": "บริการ",
|
||||
"search_proect": "ค้นหาโครงการ",
|
||||
"baht_month": "บาท/เดือน",
|
||||
"view_details": "ดูรายละเอียด",
|
||||
"phone": "เบอร์โทรศัพท์",
|
||||
"address": "ที่อยู่",
|
||||
"room_detail": "รายละเอียดห้อง",
|
||||
"month": "เดือน",
|
||||
"detail": "รายละเอียด",
|
||||
"book_room": "จองห้องพัก",
|
||||
"individual": "บุคคลธรรมดา",
|
||||
"corporate": "นิติบุคคล",
|
||||
"profile": "ข้อมูลส่วนตัว",
|
||||
"fullname": "ชื่อ - นามสกุล",
|
||||
"specific_fullname": "ระบุชื่อและนามสกุล",
|
||||
"email": "อีเมล",
|
||||
"specific_email": "ระบุอีเมล",
|
||||
"phone2": "เบอร์โทร",
|
||||
"specific_phone": "ระบุเบอร์โทร",
|
||||
"gender_mf": "เพศ ชาย , หญิง",
|
||||
"birth_date": "วัน/เดือน/ปีเกิด",
|
||||
"select_date": "เลือกวันที่",
|
||||
"expect_checkin": "วันที่คาดว่าจะเข้าพัก",
|
||||
"company_name": "ชื่อบริษัท",
|
||||
"specific_company": "ระบุชื่อบริษัท",
|
||||
"tax_id": "เลขประจำตัวผู้เสียภาษี",
|
||||
"specific_tax_id": "ระบุเลข 13 หลัก",
|
||||
"booking_submit": "ส่งข้อมูลการจอง",
|
||||
"booking_confirm": "ยืนยันการจอง",
|
||||
"booking_success": "ส่งข้อมูลการจองสำเร็จ",
|
||||
"close": "ปิด",
|
||||
"product_detail": "รายละเอียดสินค้า",
|
||||
"request_repair_other": "แจ้งซ่อม & บริการต่างๆ",
|
||||
"notification": "การแจ้งเตือน",
|
||||
"suggestion": "ข้อเสนอแนะ",
|
||||
"logout": "ออกจากระบบ",
|
||||
"citizen_id": "เลขบัตรประชาชน",
|
||||
"edit_profile": "แก้ไขข้อมูลส่วนตัว",
|
||||
"accom_info": "ข้อมูลที่พัก",
|
||||
"building": "อาคาร",
|
||||
"room2": "ห้องพัก",
|
||||
"room_no": "เลขห้อง",
|
||||
"change_password": "แก้ไขรหัสผ่าน",
|
||||
"new_password": "รหัสผ่านใหม่",
|
||||
"enter_new_password": "ใส่รหัสผ่านใหม่",
|
||||
"confirm_password": "ยืนยันรหัสผ่านใหม่",
|
||||
"enter_confirm_password": "ใส่รหัสผ่านใหม่เพื่อยืนยัน",
|
||||
"complete": "เสร็จสิ้น",
|
||||
"noti_setting": "ตั้งค่าการแจ้งเตือน",
|
||||
"news2": "ข่าวสาร",
|
||||
"promotion": "โปรโมชั่น",
|
||||
"parcel_list": "รายการพัสดุ",
|
||||
"payment_due": "ถึงเวลาชำระยอดค่าใช้จ่าย",
|
||||
"write_suggest": "เขียนข้อเสนอแนะ",
|
||||
"photo": "รูปภาพ",
|
||||
"logout_confirm": "คุณต้องการออกจากระบบหรือไม่ ?",
|
||||
"charoensin_asset": "เจริญสิน แอสเสท",
|
||||
"for_csa_customer": "สำหรับลูกค้าของบริษัท เจริญสิน แอสเสท จำกัด",
|
||||
"create_account": "สมัครสมาชิกที่นี่",
|
||||
"or": "หรือ",
|
||||
"login": "เข้าสู่ระบบ",
|
||||
"login_facebook": "เข้าสู่ระบบด้วย Facebook",
|
||||
"term_condition": "ข้อตกลงและเงื่อนไข",
|
||||
"not_agree": "ไม่ยอมรับ",
|
||||
"agree": "ยอมรับ",
|
||||
"register": "สมัครสมาชิก",
|
||||
"next": "ถัดไป",
|
||||
"not_a_member": "คุณยังไม่ได้เป็นสมาชิกใช่ไหม ?",
|
||||
"gender": "เพศ ",
|
||||
"male": "ชาย",
|
||||
"female": "หญิง",
|
||||
"citizen_id_13": "เลขบัตรประชาชน 13 หลัก",
|
||||
"water_bill": "ค่าน้ำ",
|
||||
"password": "รหัสผ่าน",
|
||||
"confirm_password_only": "ยืนยันรหัสผ่าน",
|
||||
"outstanding_balance": "ยอดค้างชำระ",
|
||||
"rating": "ประเมินให้คะแนน",
|
||||
"name": "ชื่อ",
|
||||
"category": "ประเภท",
|
||||
"individual2": "บุคคลทั่วไป",
|
||||
"zone": "โซน",
|
||||
"accommodation": "ที่พัก",
|
||||
"connect_facebook": "เชื่อมต่อกับ Facebook",
|
||||
"choose_project": "เลือกโครงการ",
|
||||
"room_for_rent": "ห้องพักให้เช่า",
|
||||
"scan_to_pay": "สแกนเพื่อจ่ายเงิน",
|
||||
"account_name": "ชื่อบัญชี",
|
||||
"account": "บัญชี",
|
||||
"ref_no": "เลขที่อ้างอิง",
|
||||
"total_payment": "ยอดชำระทั้งหมด",
|
||||
"support_all_bank": "จ่ายได้ทุกธนาคาร",
|
||||
"save": "บันทึก",
|
||||
"coporate": "ข้อมูลนิติบุคคล",
|
||||
"new_room": "ห้องใหม่",
|
||||
"please_pay_before": "โปรดชำระก่อนวันที่",
|
||||
"please_pay_within": "โปรดชำระภายในวันที่",
|
||||
"begin_charge_on" : "วันที่เริ่มปรับ",
|
||||
"to_view_outstanding_balance": "เพื่อดูยอดค้างชำระ",
|
||||
"no_mail_parcel": "ไม่มีจดหมายหรือพัสดุ",
|
||||
"no_notification": "ไม่มีการแจ้งเตือน",
|
||||
"no_product": "ไมีมีสินค้า",
|
||||
"smart_meter": "Smart Meter",
|
||||
"no_water_electric_bill": "ไม่มีบันทึกค่ามิเตอร์หรือค่าไฟ",
|
||||
"receive_code": "รับรหัสยืนยัน",
|
||||
"pay": "ชำระเงิน",
|
||||
"please_sign": "กรุณาเขียนลายเซ็นของคุณ",
|
||||
"redeem_reward": "แลกสินค้า",
|
||||
"service_detail": "รายละเอียดบริการ",
|
||||
"confirmation_code": "รหัสยืนยัน",
|
||||
"consignee": "ผู้รับ",
|
||||
"waiting_for_pickup": "รอรับของ",
|
||||
"contact_front_desk": "ติดต่อเคาน์เตอร์",
|
||||
"awaiting_payment": "รอจ่ายที่เคาน์เตอร์",
|
||||
"paid": "จ่ายเรียบร้อย",
|
||||
"latest_promotion": "โปรโมชั่นใหม่",
|
||||
"disconnect_facebook": "ยกเลิกการเชื่อมต่อ Facebook",
|
||||
"register_success": "สมัครสมาชิกสำเร็จ",
|
||||
"repair_history_detail" : "รายละเอียดประวัติ",
|
||||
"repair_inprogress" : "ซ่อมแซม",
|
||||
"repair_re_appoint": "นัดหมายใหม่",
|
||||
"repair_success": "ซ่อมสำเร็จ",
|
||||
"customer": "ลูกค้า",
|
||||
"guest": "ผู้ใช้งานทั่วไป",
|
||||
"other": "อื่น ๆ",
|
||||
"clear_signature": "ล้าง",
|
||||
"signature": "ลายเซ็น",
|
||||
"save_signature": "บันทึกรูป",
|
||||
"save_success": "บันทึกสำเร็จ",
|
||||
"save_fail_and_try": "บันทึกไม่สำเร็จ กรุณาลองอีกครั้ง",
|
||||
"new_parcel": "จดหมายและพัสดุใหม่",
|
||||
"customer_not_found": "ไม่พบข้อมูลในระบบ",
|
||||
"new_message": "ข้อความใหม่",
|
||||
"bill_payment": "บิลชำระเงิน",
|
||||
"meter_noti": "เลขมิเตอร์น้ำ-ไฟฟ้า",
|
||||
"title": "หัวข้อ",
|
||||
"update_app": "อัปเดตแอปพลิเคชัน",
|
||||
"payment_success": "ชำระเงินสำเร็จ",
|
||||
"delete_account": "ลบบัญชี"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0940"
|
||||
LastUpgradeVersion = "1120"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "NO"
|
||||
@ -55,6 +55,15 @@
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
|
||||
BuildableName = "csareactrn60-tvOS.app"
|
||||
BlueprintName = "csareactrn60-tvOS"
|
||||
ReferencedContainer = "container:csareactrn60.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
@ -67,17 +76,6 @@
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
|
||||
BuildableName = "csareactrn60-tvOS.app"
|
||||
BlueprintName = "csareactrn60-tvOS"
|
||||
ReferencedContainer = "container:csareactrn60.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
@ -99,8 +97,6 @@
|
||||
ReferencedContainer = "container:csareactrn60.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0940"
|
||||
LastUpgradeVersion = "1120"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "NO"
|
||||
@ -55,6 +55,15 @@
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
|
||||
BuildableName = "csareactrn60.app"
|
||||
BlueprintName = "csareactrn60"
|
||||
ReferencedContainer = "container:csareactrn60.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
@ -67,17 +76,6 @@
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
|
||||
BuildableName = "csareactrn60.app"
|
||||
BlueprintName = "csareactrn60"
|
||||
ReferencedContainer = "container:csareactrn60.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
@ -99,8 +97,6 @@
|
||||
ReferencedContainer = "container:csareactrn60.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
|
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>PreviewsEnabled</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
@ -5,11 +5,9 @@
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
#import <React/RCTBridgeDelegate.h>
|
||||
#import <RCTAppDelegate.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate>
|
||||
|
||||
@property (nonatomic, strong) UIWindow *window;
|
||||
@interface AppDelegate : RCTAppDelegate
|
||||
|
||||
@end
|
||||
|
@ -64,7 +64,7 @@
|
||||
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
|
||||
{
|
||||
#if DEBUG
|
||||
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
|
||||
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"];
|
||||
#else
|
||||
return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
|
||||
#endif
|
||||
|