Compare commits
No commits in common. "master" and "0.2.1" have entirely different histories.
110
.idea/codeStyles/Project.xml
generated
110
.idea/codeStyles/Project.xml
generated
@ -1,5 +1,8 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<code_scheme name="Project" version="173">
|
||||
<AndroidXmlCodeStyleSettings>
|
||||
<option name="USE_CUSTOM_SETTINGS" value="true" />
|
||||
</AndroidXmlCodeStyleSettings>
|
||||
<JetCodeStyleSettings>
|
||||
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||
</JetCodeStyleSettings>
|
||||
@ -9,113 +12,6 @@
|
||||
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
||||
<option name="USE_TAB_CHARACTER" value="true" />
|
||||
</indentOptions>
|
||||
<arrangement>
|
||||
<rules>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>xmlns:android</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>xmlns:.*</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*:id</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*:name</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>name</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>style</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>ANDROID_ATTRIBUTE_ORDER</order>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>.*</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
</rules>
|
||||
</arrangement>
|
||||
</codeStyleSettings>
|
||||
<codeStyleSettings language="kotlin">
|
||||
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||
|
||||
13
.idea/compiler.xml
generated
13
.idea/compiler.xml
generated
@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<bytecodeTargetLevel>
|
||||
<module name="app" target="1.8" />
|
||||
<module name="cocart" target="1.7" />
|
||||
<module name="core" target="1.7" />
|
||||
<module name="firebasecart" target="1.8" />
|
||||
<module name="offlinecart" target="1.8" />
|
||||
<module name="woodroid" target="1.8" />
|
||||
</bytecodeTargetLevel>
|
||||
</component>
|
||||
</project>
|
||||
7
.idea/gradle.xml
generated
7
.idea/gradle.xml
generated
@ -1,21 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="GradleMigrationSettings" migrationVersion="1" />
|
||||
<component name="GradleSettings">
|
||||
<option name="linkedExternalProjectsSettings">
|
||||
<GradleProjectSettings>
|
||||
<option name="delegatedBuild" value="false" />
|
||||
<option name="testRunner" value="PLATFORM" />
|
||||
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="modules">
|
||||
<set>
|
||||
<option value="$PROJECT_DIR$" />
|
||||
<option value="$PROJECT_DIR$/app" />
|
||||
<option value="$PROJECT_DIR$/cocart" />
|
||||
<option value="$PROJECT_DIR$/core" />
|
||||
<option value="$PROJECT_DIR$/firebasecart" />
|
||||
<option value="$PROJECT_DIR$/offlinecart" />
|
||||
<option value="$PROJECT_DIR$/woodroid" />
|
||||
</set>
|
||||
</option>
|
||||
|
||||
20
README.md
20
README.md
@ -1,8 +1,5 @@
|
||||
|
||||
|
||||
<img src="https://github.com/gilokimu/woocommerce-android-sdk/raw/master/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png"/>
|
||||
|
||||
# Woocommerce Android SDK
|
||||
|
||||
This is an woocommerce api client for android
|
||||
|
||||
<img src="https://github.com/gilokimu/woocommerce-android-sdk/raw/master/screens/screenshot-1553916911644.jpg" width="285"/> <img src="https://github.com/gilokimu/woocommerce-android-sdk/raw/master/screens/screenshot-1553916952806.jpg" width="285"/> <img src="https://github.com/gilokimu/woocommerce-android-sdk/raw/master/screens/screenshot-1553916959446.jpg" width="285"/> <img src="https://github.com/gilokimu/woocommerce-android-sdk/raw/master/screens/screenshot-1553916965766.jpg" width="285"/> <img src="https://github.com/gilokimu/woocommerce-android-sdk/raw/master/screens/screenshot-1553916980710.jpg" width="285"/> <img src="https://github.com/gilokimu/woocommerce-android-sdk/raw/master/screens/screenshot-1553916989454.jpg" width="285"/> <img src="https://github.com/gilokimu/woocommerce-android-sdk/raw/master/screens/screenshot-1553917011606.jpg" width="285"/>
|
||||
@ -60,16 +57,6 @@ Generate API credentials (Consumer Key & Consumer Secret) following this instruc
|
||||
|
||||
Check out the WooCommerce API endpoints and data that can be manipulated in <https://woocommerce.github.io/woocommerce-rest-api-docs/>.
|
||||
|
||||
## Demo
|
||||
I have left consumer key and secret within the app, for you to test the app without an installation of wordpress. To use my installation of wordpress, here are the credentials:
|
||||
|
||||
username: demo
|
||||
password: demo2019
|
||||
https://gilo.me/store/wp-admin
|
||||
|
||||
PS/ Do no harm
|
||||
|
||||
|
||||
## Setup
|
||||
|
||||
Setup for the new WP REST API integration (WooCommerce 2.6 or later):
|
||||
@ -237,10 +224,5 @@ The sample app implements an MVVM approach which would look slightly different f
|
||||
## Contribution
|
||||
Contributions are highly welcomed, just create a PR
|
||||
|
||||
## Slack
|
||||
You can also reach out through <a href="https://join.slack.com/t/woodroid/shared_invite/enQtODg1ODYzMDAzOTcxLTE4NDA0MTYyYjY5ZmVmNTU4OTEzYWQzZDcwN2Y1ZTZkMzk4ZDY0ZGU4NmZlMzQ1NjlhM2RlZDc4Mjc4ZjE2NzI">slack</a> in case of any issues with installation or feature request
|
||||
|
||||
## Love the Project?
|
||||
You can donate to support the project futher.<a class="donate-with-crypto" href="https://commerce.coinbase.com/checkout/3efb7008-27b1-4c64-934b-791e5c1a6cda"> Donate with Crypto </a>
|
||||
|
||||
|
||||
|
||||
178
app/build.gradle
178
app/build.gradle
@ -1,18 +1,19 @@
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
apply plugin: 'kotlin-android'
|
||||
|
||||
apply plugin: 'kotlin-android-extensions'
|
||||
apply plugin: 'kotlin-kapt'
|
||||
|
||||
android {
|
||||
compileSdkVersion 29
|
||||
compileSdkVersion 28
|
||||
defaultConfig {
|
||||
applicationId "me.gilo.woodroid.app"
|
||||
applicationId "me.gilo.wc"
|
||||
minSdkVersion 16
|
||||
targetSdkVersion 29
|
||||
targetSdkVersion 28
|
||||
versionCode 1
|
||||
versionName "1.0"
|
||||
multiDexEnabled true
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
@ -33,178 +34,75 @@ android {
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility = '1.8'
|
||||
targetCompatibility = '1.8'
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
dataBinding {
|
||||
enabled = true
|
||||
}
|
||||
|
||||
packagingOptions {
|
||||
exclude 'META-INF/DEPENDENCIES'
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
}
|
||||
// To inline the bytecode built with JVM target 1.8 into
|
||||
// bytecode that is being built with JVM target 1.6. (e.g. navArgs)
|
||||
|
||||
|
||||
}
|
||||
|
||||
configurations.all {
|
||||
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
|
||||
def requested = details.requested
|
||||
if (requested.group == "com.android.support") {
|
||||
if (!requested.name.startsWith("multidex")) {
|
||||
details.useVersion "26.+"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
all*.exclude group: 'com.google.guava', module: 'listenablefuture'
|
||||
}
|
||||
|
||||
ext {
|
||||
arch_version = '1.1.1'
|
||||
firebase_version = '11.8.0'
|
||||
support_lib_version = '28.0.0'
|
||||
dagger_version = '2.14.1'
|
||||
play_services = '15.0.1'
|
||||
roomVersion = '1.1.1'
|
||||
|
||||
coroutinesVersion = "1.1.1"
|
||||
|
||||
}
|
||||
|
||||
kapt {
|
||||
generateStubs = true
|
||||
}
|
||||
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
|
||||
implementation 'androidx.paging:paging-runtime-ktx:2.1.0'
|
||||
implementation 'com.google.android.gms:play-services-auth:17.0.0'
|
||||
testImplementation 'junit:junit:4.12'
|
||||
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||
implementation 'com.android.support:appcompat-v7:28.0.0'
|
||||
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
|
||||
implementation 'com.android.support:design:28.0.0'
|
||||
|
||||
implementation 'androidx.appcompat:appcompat:1.1.0'
|
||||
|
||||
implementation 'com.google.android.material:material:1.0.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
|
||||
testImplementation 'junit:junit:4.12'
|
||||
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
|
||||
|
||||
// Support Libs
|
||||
implementation 'androidx.appcompat:appcompat:1.1.0'
|
||||
implementation 'androidx.vectordrawable:vectordrawable-animated:1.1.0'
|
||||
implementation 'androidx.cardview:cardview:1.0.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
|
||||
implementation 'androidx.browser:browser:1.0.0'
|
||||
implementation 'com.google.android.material:material:1.0.0'
|
||||
implementation 'androidx.recyclerview:recyclerview:1.0.0'
|
||||
implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
|
||||
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
||||
implementation 'androidx.viewpager2:viewpager2:1.0.0-rc01'
|
||||
|
||||
//firebase stuff
|
||||
implementation 'com.google.firebase:firebase-database:19.2.0'
|
||||
implementation 'com.google.firebase:firebase-auth:19.1.0'
|
||||
implementation 'com.google.firebase:firebase-core:17.2.1'
|
||||
implementation 'com.google.firebase:firebase-firestore:21.3.0'
|
||||
implementation 'com.google.firebase:firebase-storage:19.1.0'
|
||||
implementation 'com.google.firebase:firebase-database:16.0.4'
|
||||
implementation 'com.google.firebase:firebase-auth:16.0.4'
|
||||
implementation 'com.google.firebase:firebase-core:16.0.4'
|
||||
implementation 'com.google.firebase:firebase-firestore:17.1.1'
|
||||
implementation 'com.google.firebase:firebase-storage:16.0.4'
|
||||
implementation 'com.firebaseui:firebase-ui-database:4.2.0'
|
||||
implementation 'com.firebaseui:firebase-ui-firestore:4.2.0'
|
||||
implementation 'com.firebaseui:firebase-ui-storage:4.2.0'
|
||||
implementation 'com.google.firebase:firebase-messaging:20.0.1'
|
||||
|
||||
|
||||
implementation 'com.google.android.gms:play-services-maps:17.0.0'
|
||||
testImplementation 'junit:junit:4.12'
|
||||
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
|
||||
implementation 'com.google.firebase:firebase-messaging:17.1.0'
|
||||
|
||||
implementation 'io.github.inflationx:calligraphy3:3.0.0'
|
||||
implementation 'io.github.inflationx:viewpump:2.0.3'
|
||||
implementation 'io.github.inflationx:viewpump:1.0.0'
|
||||
|
||||
implementation 'org.greenrobot:eventbus:3.1.1'
|
||||
implementation 'com.squareup.picasso:picasso:2.5.2'
|
||||
|
||||
implementation 'com.android.support:support-v4:28.0.0'
|
||||
testImplementation 'junit:junit:4.12'
|
||||
androidTestImplementation 'com.android.support.test:runner:1.0.2'
|
||||
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
|
||||
implementation project(path: ':woodroid')
|
||||
|
||||
implementation 'de.hdodenhof:circleimageview:2.1.0'
|
||||
|
||||
implementation 'com.romandanylyk:pageindicatorview:0.2.0@aar'
|
||||
|
||||
// Android architecture components
|
||||
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0-rc02"
|
||||
kapt "androidx.lifecycle:lifecycle-compiler:2.2.0-rc02"
|
||||
|
||||
implementation 'androidx.core:core-ktx:1.1.0'
|
||||
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0-rc02"
|
||||
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0-rc02"
|
||||
|
||||
// Room components
|
||||
implementation "androidx.room:room-runtime:2.2.1"
|
||||
kapt "androidx.room:room-compiler:2.2.1"
|
||||
androidTestImplementation "androidx.room:room-testing:2.2.1"
|
||||
implementation "android.arch.lifecycle:extensions:$arch_version"
|
||||
annotationProcessor "android.arch.lifecycle:compiler:$arch_version"
|
||||
implementation "android.arch.paging:runtime:1.0.1"
|
||||
|
||||
// Dagger.
|
||||
implementation "com.google.dagger:dagger:2.15"
|
||||
implementation "com.google.dagger:dagger-android:2.15"
|
||||
implementation "com.google.dagger:dagger-android-support:2.15"
|
||||
kapt "com.google.dagger:dagger-android-processor:2.15"
|
||||
kapt "com.google.dagger:dagger-compiler:2.15"
|
||||
implementation "com.google.dagger:dagger:$dagger_version"
|
||||
implementation "com.google.dagger:dagger-android:$dagger_version"
|
||||
implementation "com.google.dagger:dagger-android-support:$dagger_version"
|
||||
annotationProcessor "com.google.dagger:dagger-android-processor:$dagger_version"
|
||||
annotationProcessor "com.google.dagger:dagger-compiler:$dagger_version"
|
||||
|
||||
// Third-party libraries
|
||||
|
||||
implementation 'net.danlew:android.joda:2.9.9.4'
|
||||
|
||||
implementation 'com.readystatesoftware.systembartint:systembartint:1.0.3'
|
||||
implementation 'com.akexorcist:googledirectionlibrary:1.0.5'
|
||||
//noinspection GradleDynamicVersion
|
||||
implementation 'com.google.maps.android:android-maps-utils:0.5+'
|
||||
implementation 'com.github.aarsy.googlemapsanimations:googlemapsanimations:1.0.5'
|
||||
|
||||
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
|
||||
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
|
||||
|
||||
implementation 'com.google.code.gson:gson:2.8.5'
|
||||
|
||||
implementation 'com.jakewharton.retrofit:retrofit1-okhttp3-client:1.1.0'
|
||||
|
||||
implementation 'io.reactivex:rxandroid:1.2.1'
|
||||
implementation 'io.reactivex:rxjava:1.3.0'
|
||||
|
||||
implementation 'androidx.multidex:multidex:2.0.1'
|
||||
|
||||
implementation 'androidx.room:room-runtime:2.2.2'
|
||||
kapt 'androidx.room:room-compiler:2.2.2'
|
||||
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
|
||||
|
||||
|
||||
implementation 'org.greenrobot:eventbus:3.1.1'
|
||||
|
||||
implementation "com.hootsuite.android:nachos:1.1.1"
|
||||
implementation 'com.miguelcatalan:materialsearchview:1.4.0'
|
||||
|
||||
implementation 'me.relex:circleindicator:1.2.2@aar'
|
||||
|
||||
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion"
|
||||
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion"
|
||||
implementation 'net.danlew:android.joda:2.9.9.4'
|
||||
|
||||
implementation project(path: ':woodroid')
|
||||
implementation project(path: ':firebasecart')
|
||||
implementation project(path: ':core')
|
||||
implementation project(path: ':cocart')
|
||||
implementation project(path: ':offlinecart')
|
||||
implementation 'org.greenrobot:eventbus:3.1.1'
|
||||
implementation 'android.arch.lifecycle:livedata:1.1.1'
|
||||
|
||||
debugImplementation 'im.dino:dbinspector:3.4.1@aar'
|
||||
|
||||
implementation 'org.fabiomsr:moneytextview:1.1.0'
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:159460744011:android:6480f4108da5caac",
|
||||
"android_client_info": {
|
||||
"package_name": "me.gilo.woodroid.app"
|
||||
"package_name": "me.gilo.wc"
|
||||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package me.gilo.woodroid
|
||||
package me.gilo.wc
|
||||
|
||||
import android.support.test.InstrumentationRegistry
|
||||
import android.support.test.runner.AndroidJUnit4
|
||||
@ -1,72 +1,65 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="me.gilo.woodroid.app">
|
||||
package="me.gilo.wc">
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
|
||||
<application
|
||||
android:name="me.gilo.woodroid.app.WcApp"
|
||||
android:name=".WcApp"
|
||||
android:allowBackup="true"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme"
|
||||
android:usesCleartextTraffic="true"
|
||||
tools:ignore="GoogleAppIndexingWarning">
|
||||
android:usesCleartextTraffic="true">
|
||||
<activity
|
||||
android:name="me.gilo.woodroid.app.ui.order.OrderActivity"
|
||||
android:label="@string/title_activity_order"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name="me.gilo.woodroid.app.ui.onboarding.AnonymousSignInActivity"
|
||||
android:name=".ui.onboarding.AnonymousSignInActivity"
|
||||
android:label="@string/title_activity_anonymous_sign_in"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name="me.gilo.woodroid.app.ui.checkout.CheckoutActivity"
|
||||
android:name=".ui.checkout.CheckoutActivity"
|
||||
android:label="@string/title_activity_checkout"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name="me.gilo.woodroid.app.ui.product.CartActivity"
|
||||
android:name=".ui.product.CartActivity"
|
||||
android:label="@string/title_activity_cart"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name="me.gilo.woodroid.app.ui.customer.ProfileActivity"
|
||||
android:name=".ui.customer.ProfileActivity"
|
||||
android:label="@string/title_activity_profile"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name="me.gilo.woodroid.app.ui.customer.ShippingAddressActivity"
|
||||
android:name=".ui.customer.ShippingAddressActivity"
|
||||
android:label="@string/title_activity_shipping_address"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name="me.gilo.woodroid.app.ui.customer.BillingAddressActivity"
|
||||
android:name=".ui.customer.BillingAddressActivity"
|
||||
android:label="@string/title_activity_billing_address"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name="me.gilo.woodroid.app.ui.customer.BasicCustomerDetailsActivity"
|
||||
android:name=".ui.customer.BasicCustomerDetailsActivity"
|
||||
android:label="@string/title_activity_basic_customer_details"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name="me.gilo.woodroid.app.ui.onboarding.UserDetailsActivity"
|
||||
android:name=".ui.onboarding.UserDetailsActivity"
|
||||
android:label="@string/title_activity_user_details"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name="me.gilo.woodroid.app.ui.order.MyOrdersActivity"
|
||||
android:name=".ui.order.MyOrdersActivity"
|
||||
android:label="@string/title_activity_my_orders"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name="me.gilo.woodroid.app.ui.home.HomeActivity"
|
||||
android:name=".ui.home.HomeActivity"
|
||||
android:label="@string/title_activity_home"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
</activity>
|
||||
@ -91,12 +84,12 @@
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name="me.gilo.woodroid.app.ui.product.ProductActivity"
|
||||
android:name=".ui.product.ProductActivity"
|
||||
android:label="@string/title_activity_product"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name="me.gilo.woodroid.app.ui.product.ProductSearchActivity"
|
||||
android:name=".ui.product.ProductSearchActivity"
|
||||
android:label="@string/title_activity_product_search"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
<intent-filter>
|
||||
@ -104,34 +97,34 @@
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name="me.gilo.woodroid.app.ui.coupon.CouponActivity"
|
||||
android:name=".ui.coupon.CouponActivity"
|
||||
android:label="@string/title_activity_coupon"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name="me.gilo.woodroid.app.ui.coupon.CouponsActivity"
|
||||
android:name=".ui.coupon.CouponsActivity"
|
||||
android:label="@string/title_activity_coupons"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name="me.gilo.woodroid.app.ui.coupon.AddCouponActivity"
|
||||
android:name=".ui.coupon.AddCouponActivity"
|
||||
android:label="@string/title_activity_add_coupon"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name="me.gilo.woodroid.app.ui.MenuActivity"
|
||||
android:name=".ui.MenuActivity"
|
||||
android:label="@string/title_activity_menu"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name="me.gilo.woodroid.app.ui.product.ShopActivity"
|
||||
android:name=".ui.product.ShopActivity"
|
||||
android:label="@string/title_activity_shop"
|
||||
android:theme="@style/AppTheme.NoActionBar">
|
||||
<meta-data
|
||||
android:name="android.app.searchable"
|
||||
android:resource="@xml/searchable"/>
|
||||
</activity>
|
||||
<activity android:name="me.gilo.woodroid.app.MainActivity">
|
||||
<activity android:name=".MainActivity">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
|
||||
|
||||
@ -1,27 +1,33 @@
|
||||
package me.gilo.woodroid.app
|
||||
package me.gilo.wc
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import android.util.Log
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import com.google.firebase.auth.FirebaseAuth
|
||||
import me.gilo.raison.ui.user.onboarding.SignInActivity
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.ui.home.HomeActivity
|
||||
import me.gilo.woodroid.app.ui.onboarding.AnonymousSignInActivity
|
||||
import me.gilo.woodroid.app.ui.order.MyOrdersActivity
|
||||
import me.gilo.raison.ui.user.onboarding.SignUpActivity
|
||||
import me.gilo.wc.ui.customer.BasicCustomerDetailsActivity
|
||||
import me.gilo.wc.ui.customer.BillingAddressActivity
|
||||
import me.gilo.wc.ui.customer.ShippingAddressActivity
|
||||
import me.gilo.wc.ui.home.HomeActivity
|
||||
import me.gilo.wc.ui.onboarding.AnonymousSignInActivity
|
||||
import me.gilo.wc.ui.product.ProductActivity
|
||||
|
||||
class MainActivity : AppCompatActivity() {
|
||||
|
||||
val TAG = "MainActivity";
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_main)
|
||||
|
||||
if (FirebaseAuth.getInstance().currentUser != null) {
|
||||
|
||||
if(FirebaseAuth.getInstance().currentUser != null) {
|
||||
startActivity(Intent(baseContext, HomeActivity::class.java))
|
||||
} else {
|
||||
}else{
|
||||
startActivity(Intent(baseContext, AnonymousSignInActivity::class.java))
|
||||
}
|
||||
|
||||
finish()
|
||||
|
||||
}
|
||||
32
app/src/main/java/me/gilo/wc/WcApp.java
Normal file
32
app/src/main/java/me/gilo/wc/WcApp.java
Normal file
@ -0,0 +1,32 @@
|
||||
package me.gilo.wc;
|
||||
|
||||
import android.app.Application;
|
||||
import dagger.android.AndroidInjector;
|
||||
import dagger.android.DaggerApplication;
|
||||
import io.github.inflationx.calligraphy3.CalligraphyConfig;
|
||||
import io.github.inflationx.calligraphy3.CalligraphyInterceptor;
|
||||
import io.github.inflationx.viewpump.ViewPump;
|
||||
import me.gilo.wc.di.DaggerAppComponent;
|
||||
|
||||
public class WcApp extends DaggerApplication {
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
|
||||
ViewPump.init(ViewPump.builder()
|
||||
.addInterceptor(new CalligraphyInterceptor(
|
||||
new CalligraphyConfig.Builder()
|
||||
.setDefaultFontPath("fonts/GT-America-Regular.otf")
|
||||
.setFontAttrId(R.attr.fontPath)
|
||||
.build()))
|
||||
.build());
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected AndroidInjector<? extends DaggerApplication> applicationInjector() {
|
||||
return DaggerAppComponent.create();
|
||||
}
|
||||
}
|
||||
37
app/src/main/java/me/gilo/wc/adapter/CartAdapter.java
Normal file
37
app/src/main/java/me/gilo/wc/adapter/CartAdapter.java
Normal file
@ -0,0 +1,37 @@
|
||||
package me.gilo.wc.adapter;
|
||||
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
import me.gilo.wc.R;
|
||||
import me.gilo.wc.adapter.viewholder.CartViewHolder;
|
||||
import me.gilo.wc.adapter.viewholder.CategoryViewHolder;
|
||||
import me.gilo.wc.models.CartLineItem;
|
||||
import me.gilo.woodroid.models.CartItem;
|
||||
import me.gilo.woodroid.models.Category;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CartAdapter extends RecyclerView.Adapter<CartViewHolder> {
|
||||
private List<CartLineItem> cartLineItems;
|
||||
|
||||
public CartAdapter(List<CartLineItem> cartLineItems) {
|
||||
this.cartLineItems = cartLineItems;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CartViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
return new CartViewHolder(parent.getContext(), LayoutInflater.from(parent.getContext()).inflate(R.layout.single_cart_item, parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(CartViewHolder holder, int position) {
|
||||
holder.renderView(cartLineItems.get(position));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return cartLineItems.size() == 0 ? 0 : cartLineItems.size();
|
||||
}
|
||||
}
|
||||
34
app/src/main/java/me/gilo/wc/adapter/CategoryAdapter.java
Normal file
34
app/src/main/java/me/gilo/wc/adapter/CategoryAdapter.java
Normal file
@ -0,0 +1,34 @@
|
||||
package me.gilo.wc.adapter;
|
||||
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
import me.gilo.wc.R;
|
||||
import me.gilo.wc.adapter.viewholder.CategoryViewHolder;
|
||||
import me.gilo.woodroid.models.Category;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CategoryAdapter extends RecyclerView.Adapter<CategoryViewHolder> {
|
||||
private List<Category> categories;
|
||||
|
||||
public CategoryAdapter(List<Category> categories) {
|
||||
this.categories = categories;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CategoryViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
return new CategoryViewHolder(parent.getContext(), LayoutInflater.from(parent.getContext()).inflate(R.layout.single_category_item, parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(CategoryViewHolder holder, int position) {
|
||||
holder.renderView(categories.get(position));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return categories.size() == 0 ? 0 : categories.size();
|
||||
}
|
||||
}
|
||||
34
app/src/main/java/me/gilo/wc/adapter/CouponAdapter.java
Normal file
34
app/src/main/java/me/gilo/wc/adapter/CouponAdapter.java
Normal file
@ -0,0 +1,34 @@
|
||||
package me.gilo.wc.adapter;
|
||||
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
import me.gilo.wc.R;
|
||||
import me.gilo.wc.adapter.viewholder.CouponViewHolder;
|
||||
import me.gilo.woodroid.models.Coupon;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CouponAdapter extends RecyclerView.Adapter<CouponViewHolder> {
|
||||
private List<Coupon> coupons;
|
||||
|
||||
public CouponAdapter(List<Coupon> coupons) {
|
||||
this.coupons = coupons;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CouponViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
return new CouponViewHolder(parent.getContext(), LayoutInflater.from(parent.getContext()).inflate(R.layout.single_coupon_item, parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(CouponViewHolder holder, int position) {
|
||||
holder.renderView(coupons.get(position));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return coupons.size() == 0 ? 0 : coupons.size();
|
||||
}
|
||||
}
|
||||
34
app/src/main/java/me/gilo/wc/adapter/HomeProductAdapter.java
Normal file
34
app/src/main/java/me/gilo/wc/adapter/HomeProductAdapter.java
Normal file
@ -0,0 +1,34 @@
|
||||
package me.gilo.wc.adapter;
|
||||
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
import me.gilo.wc.R;
|
||||
import me.gilo.wc.adapter.viewholder.ProductViewHolder;
|
||||
import me.gilo.woodroid.models.Product;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class HomeProductAdapter extends RecyclerView.Adapter<ProductViewHolder> {
|
||||
private List<Product> products;
|
||||
|
||||
public HomeProductAdapter(List<Product> products) {
|
||||
this.products = products;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProductViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
return new ProductViewHolder(parent.getContext(), LayoutInflater.from(parent.getContext()).inflate(R.layout.single_home_product_item, parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(ProductViewHolder holder, int position) {
|
||||
holder.renderView(products.get(position));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return products.size() == 0 ? 0 : products.size();
|
||||
}
|
||||
}
|
||||
@ -1,14 +1,14 @@
|
||||
package me.gilo.woodroid.app.adapter
|
||||
package me.gilo.wc.adapter
|
||||
|
||||
|
||||
import android.content.Context
|
||||
import androidx.viewpager.widget.PagerAdapter
|
||||
import android.support.v4.view.PagerAdapter
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import com.squareup.picasso.Picasso
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.woodroid.models.Image
|
||||
|
||||
|
||||
@ -22,10 +22,12 @@ class ImagePagerAdapter(val context: Context, private val images: List<Image>) :
|
||||
val ivImage = layout.findViewById<ImageView>(R.id.ivImage)
|
||||
|
||||
val image = images[position]
|
||||
if (image != null) {
|
||||
Picasso
|
||||
.with(context)
|
||||
.load(image.src)
|
||||
.load(image!!.src)
|
||||
.into(ivImage)
|
||||
}
|
||||
|
||||
collection.addView(layout)
|
||||
return layout
|
||||
34
app/src/main/java/me/gilo/wc/adapter/ListAdapter.java
Normal file
34
app/src/main/java/me/gilo/wc/adapter/ListAdapter.java
Normal file
@ -0,0 +1,34 @@
|
||||
package me.gilo.wc.adapter;
|
||||
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
import me.gilo.wc.R;
|
||||
import me.gilo.wc.adapter.viewholder.ProductViewHolder;
|
||||
import me.gilo.woodroid.models.Product;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ListAdapter extends RecyclerView.Adapter<ProductViewHolder> {
|
||||
private List<Product> products;
|
||||
|
||||
public ListAdapter(List<Product> products) {
|
||||
this.products = products;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProductViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
return new ProductViewHolder(parent.getContext(), LayoutInflater.from(parent.getContext()).inflate(R.layout.single_product_item, parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(ProductViewHolder holder, int position) {
|
||||
holder.renderView(products.get(position));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return products.size() == 0 ? 0 : products.size();
|
||||
}
|
||||
}
|
||||
36
app/src/main/java/me/gilo/wc/adapter/MenuAdapter.java
Normal file
36
app/src/main/java/me/gilo/wc/adapter/MenuAdapter.java
Normal file
@ -0,0 +1,36 @@
|
||||
package me.gilo.wc.adapter;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
import me.gilo.wc.R;
|
||||
import me.gilo.wc.adapter.viewholder.MenuViewHolder;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
public class MenuAdapter extends RecyclerView.Adapter<MenuViewHolder> {
|
||||
private List<String> titles;
|
||||
|
||||
public MenuAdapter( List<String> titles) {
|
||||
this.titles = titles;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MenuViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
return new MenuViewHolder(parent.getContext(), LayoutInflater.from(parent.getContext()).inflate(R.layout.single_menu_item, parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(MenuViewHolder holder, int position) {
|
||||
holder.renderView(titles.get(position));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return titles.size() == 0 ? 0 : titles.size();
|
||||
}
|
||||
}
|
||||
36
app/src/main/java/me/gilo/wc/adapter/OrderAdapter.java
Normal file
36
app/src/main/java/me/gilo/wc/adapter/OrderAdapter.java
Normal file
@ -0,0 +1,36 @@
|
||||
package me.gilo.wc.adapter;
|
||||
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
import me.gilo.wc.R;
|
||||
import me.gilo.wc.adapter.viewholder.CategoryViewHolder;
|
||||
import me.gilo.wc.adapter.viewholder.OrderViewHolder;
|
||||
import me.gilo.woodroid.models.Category;
|
||||
import me.gilo.woodroid.models.Order;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class OrderAdapter extends RecyclerView.Adapter<OrderViewHolder> {
|
||||
private List<Order> orders;
|
||||
|
||||
public OrderAdapter(List<Order> orders) {
|
||||
this.orders = orders;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrderViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
return new OrderViewHolder(parent.getContext(), LayoutInflater.from(parent.getContext()).inflate(R.layout.single_order_item, parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(OrderViewHolder holder, int position) {
|
||||
holder.renderView(orders.get(position));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return orders.size() == 0 ? 0 : orders.size();
|
||||
}
|
||||
}
|
||||
35
app/src/main/java/me/gilo/wc/adapter/ProductAdapter.java
Normal file
35
app/src/main/java/me/gilo/wc/adapter/ProductAdapter.java
Normal file
@ -0,0 +1,35 @@
|
||||
package me.gilo.wc.adapter;
|
||||
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
import me.gilo.wc.R;
|
||||
import me.gilo.wc.adapter.viewholder.MenuViewHolder;
|
||||
import me.gilo.wc.adapter.viewholder.ProductViewHolder;
|
||||
import me.gilo.woodroid.models.Product;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ProductAdapter extends RecyclerView.Adapter<ProductViewHolder> {
|
||||
private List<Product> products;
|
||||
|
||||
public ProductAdapter(List<Product> products) {
|
||||
this.products = products;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProductViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
return new ProductViewHolder(parent.getContext(), LayoutInflater.from(parent.getContext()).inflate(R.layout.single_product_item, parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(ProductViewHolder holder, int position) {
|
||||
holder.renderView(products.get(position));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return products.size() == 0 ? 0 : products.size();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
package me.gilo.wc.adapter;
|
||||
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
import me.gilo.wc.R;
|
||||
import me.gilo.wc.adapter.viewholder.ProductReviewViewHolder;
|
||||
import me.gilo.wc.adapter.viewholder.ProductViewHolder;
|
||||
import me.gilo.woodroid.models.Product;
|
||||
import me.gilo.woodroid.models.ProductReview;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ProductReviewAdapter extends RecyclerView.Adapter<ProductReviewViewHolder> {
|
||||
private List<ProductReview> reviews;
|
||||
|
||||
public ProductReviewAdapter(List<ProductReview> reviews) {
|
||||
this.reviews = reviews;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProductReviewViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
return new ProductReviewViewHolder(parent.getContext(), LayoutInflater.from(parent.getContext()).inflate(R.layout.single_product_review, parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(ProductReviewViewHolder holder, int position) {
|
||||
holder.renderView(reviews.get(position));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return reviews.size() == 0 ? 0 : reviews.size();
|
||||
}
|
||||
}
|
||||
@ -1,19 +1,27 @@
|
||||
package me.gilo.woodroid.app.adapter.viewholder
|
||||
package me.gilo.wc.adapter.viewholder
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import android.support.v7.widget.RecyclerView
|
||||
import android.text.Html
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import com.squareup.picasso.Picasso
|
||||
import me.gilo.woodroid.models.Product
|
||||
import android.text.Spannable
|
||||
import android.text.style.ForegroundColorSpan
|
||||
import android.text.SpannableString
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.events.AddQuantityEvent
|
||||
import me.gilo.woodroid.app.events.LessQuantityEvent
|
||||
import me.gilo.woodroid.app.models.CartLineItem
|
||||
import me.gilo.woodroid.app.ui.product.ProductActivity
|
||||
import android.graphics.Color
|
||||
import kotlinx.android.synthetic.main.content_product.*
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.events.AddQuantityEvent
|
||||
import me.gilo.wc.events.LessQuantityEvent
|
||||
import me.gilo.wc.events.ProductEvent
|
||||
import me.gilo.wc.models.CartLineItem
|
||||
import me.gilo.wc.ui.coupon.CouponActivity
|
||||
import me.gilo.wc.ui.product.ProductActivity
|
||||
import me.gilo.woodroid.models.CartItem
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
||||
|
||||
@ -1,12 +1,13 @@
|
||||
package me.gilo.woodroid.app.adapter.viewholder
|
||||
package me.gilo.wc.adapter.viewholder
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import android.support.v7.widget.RecyclerView
|
||||
import android.text.Html
|
||||
import android.view.View
|
||||
import android.widget.TextView
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.ui.product.ShopActivity
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.ui.product.ShopActivity
|
||||
import me.gilo.woodroid.models.Category
|
||||
|
||||
class CategoryViewHolder(val context: Context, itemView: View) :
|
||||
@ -1,13 +1,13 @@
|
||||
package me.gilo.woodroid.app.adapter.viewholder
|
||||
package me.gilo.wc.adapter.viewholder
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import android.support.v7.widget.RecyclerView
|
||||
import android.text.Html
|
||||
import android.view.View
|
||||
import android.widget.TextView
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.ui.coupon.CouponActivity
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.ui.coupon.CouponActivity
|
||||
import me.gilo.woodroid.models.Coupon
|
||||
|
||||
class CouponViewHolder(val context: Context, itemView: View) :
|
||||
@ -17,7 +17,7 @@ class CouponViewHolder(val context: Context, itemView: View) :
|
||||
val tvTitle = itemView.findViewById<TextView>(R.id.tvTitle)
|
||||
val tvDescription = itemView.findViewById<TextView>(R.id.tvDescription)
|
||||
|
||||
tvTitle.text = coupon.code?.toUpperCase()
|
||||
tvTitle.text = coupon.code.toUpperCase()
|
||||
tvDescription.text = Html.fromHtml(coupon.description)
|
||||
|
||||
itemView.setOnClickListener{
|
||||
@ -1,13 +1,13 @@
|
||||
package me.gilo.woodroid.app.adapter.viewholder;
|
||||
package me.gilo.wc.adapter.viewholder;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
import me.gilo.woodroid.app.R;
|
||||
import me.gilo.woodroid.app.ui.coupon.CouponsActivity;
|
||||
import me.gilo.woodroid.app.ui.product.ShopActivity;
|
||||
import me.gilo.wc.R;
|
||||
import me.gilo.wc.ui.coupon.CouponsActivity;
|
||||
import me.gilo.wc.ui.product.ShopActivity;
|
||||
|
||||
public class MenuViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
@ -0,0 +1,24 @@
|
||||
package me.gilo.wc.adapter.viewholder
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.support.v7.widget.RecyclerView
|
||||
import android.text.Html
|
||||
import android.view.View
|
||||
import android.widget.TextView
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.ui.product.ShopActivity
|
||||
import me.gilo.woodroid.models.Category
|
||||
import me.gilo.woodroid.models.Order
|
||||
|
||||
class OrderViewHolder(val context: Context, itemView: View) :
|
||||
RecyclerView.ViewHolder(itemView) {
|
||||
|
||||
fun renderView(order: Order) {
|
||||
val tvTitle = itemView.findViewById<TextView>(R.id.tvTitle)
|
||||
tvTitle.text = order.orderNumber
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -1,15 +1,18 @@
|
||||
package me.gilo.woodroid.app.adapter.viewholder
|
||||
package me.gilo.wc.adapter.viewholder
|
||||
|
||||
import android.content.Context
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import android.content.Intent
|
||||
import android.support.v7.widget.RecyclerView
|
||||
import android.text.Html
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import android.widget.RatingBar
|
||||
import android.widget.TextView
|
||||
import com.squareup.picasso.Picasso
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.utils.DateUtils
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.ui.product.ShopActivity
|
||||
import me.gilo.wc.utils.DateUtils
|
||||
import me.gilo.woodroid.models.Category
|
||||
import me.gilo.woodroid.models.ProductReview
|
||||
|
||||
class ProductReviewViewHolder(val context: Context, itemView: View) :
|
||||
@ -1,17 +1,22 @@
|
||||
package me.gilo.woodroid.app.adapter.viewholder
|
||||
package me.gilo.wc.adapter.viewholder
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import android.support.v7.widget.RecyclerView
|
||||
import android.text.Html
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import com.squareup.picasso.Picasso
|
||||
import android.text.SpannableString
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.ui.product.ProductActivity
|
||||
import me.gilo.woodroid.models.Product
|
||||
import android.text.Spannable
|
||||
import android.text.style.ForegroundColorSpan
|
||||
import android.text.SpannableString
|
||||
import android.graphics.Color
|
||||
import kotlinx.android.synthetic.main.content_product.*
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.ui.coupon.CouponActivity
|
||||
import me.gilo.wc.ui.product.ProductActivity
|
||||
|
||||
|
||||
class ProductViewHolder(val context: Context, itemView: View) :
|
||||
@ -1,12 +1,13 @@
|
||||
package me.gilo.woodroid.app.common;
|
||||
package me.gilo.wc.common;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import androidx.lifecycle.ViewModel;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.lifecycle.ViewModelProviders;
|
||||
import android.arch.lifecycle.ViewModel;
|
||||
import android.arch.lifecycle.ViewModelProvider;
|
||||
import android.arch.lifecycle.ViewModelProviders;
|
||||
import android.content.Context;
|
||||
import dagger.android.support.DaggerAppCompatActivity;
|
||||
import io.github.inflationx.viewpump.ViewPumpContextWrapper;
|
||||
import me.gilo.wc.ui.state.ProgressDialogFragment;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package me.gilo.woodroid.app.common;
|
||||
package me.gilo.wc.common;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.annotation.NonNull;
|
||||
import android.arch.lifecycle.LiveData;
|
||||
import android.support.annotation.NonNull;
|
||||
import com.google.android.gms.tasks.OnCompleteListener;
|
||||
import com.google.android.gms.tasks.Task;
|
||||
import com.google.firebase.firestore.DocumentReference;
|
||||
@ -0,0 +1,25 @@
|
||||
package me.gilo.wc.common;
|
||||
|
||||
import android.arch.lifecycle.LiveData;
|
||||
import android.support.annotation.NonNull;
|
||||
import com.google.android.gms.tasks.OnCompleteListener;
|
||||
import com.google.android.gms.tasks.Task;
|
||||
|
||||
|
||||
public final class CompletionGenericLiveData<T> extends LiveData<Resource<T>> implements OnCompleteListener<T> {
|
||||
|
||||
|
||||
public CompletionGenericLiveData() {
|
||||
setValue(new Resource<>(Status.LOADING));
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void onComplete(@NonNull Task<T> task) {
|
||||
if (task.isSuccessful()) {
|
||||
setValue(new Resource<T>(task.getResult()));
|
||||
} else {
|
||||
setValue(new Resource<>(task.getException()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package me.gilo.woodroid.app.common;
|
||||
package me.gilo.wc.common;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.annotation.NonNull;
|
||||
import android.arch.lifecycle.LiveData;
|
||||
import android.support.annotation.NonNull;
|
||||
import com.google.android.gms.tasks.OnCompleteListener;
|
||||
import com.google.android.gms.tasks.Task;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package me.gilo.woodroid.app.common;
|
||||
package me.gilo.wc.common;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import android.arch.lifecycle.LiveData;
|
||||
import com.google.firebase.firestore.*;
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package me.gilo.woodroid.app.common;
|
||||
package me.gilo.wc.common;
|
||||
|
||||
public class NetworkException extends Exception{
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package me.gilo.woodroid.app.common;
|
||||
package me.gilo.wc.common;
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
|
||||
/**
|
||||
* Created by amrro <amr.elghobary@gmail.com> on 9/15/17.
|
||||
@ -1,9 +1,9 @@
|
||||
package me.gilo.woodroid.app.common;
|
||||
package me.gilo.wc.common;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.annotation.NonNull;
|
||||
import android.arch.lifecycle.LiveData;
|
||||
import android.support.annotation.NonNull;
|
||||
import com.google.firebase.firestore.*;
|
||||
import me.gilo.woodroid.app.models.Model;
|
||||
import me.gilo.wc.models.Model;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
@ -1,7 +1,7 @@
|
||||
package me.gilo.woodroid.app.common;
|
||||
package me.gilo.wc.common;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package me.gilo.woodroid.app.common;
|
||||
package me.gilo.wc.common;
|
||||
|
||||
public enum Status {
|
||||
EMPTY,
|
||||
@ -1,6 +1,6 @@
|
||||
package me.gilo.woodroid.app.common;
|
||||
package me.gilo.wc.common;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import android.arch.lifecycle.LiveData;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
58
app/src/main/java/me/gilo/wc/di/ActivitiesModule.java
Normal file
58
app/src/main/java/me/gilo/wc/di/ActivitiesModule.java
Normal file
@ -0,0 +1,58 @@
|
||||
package me.gilo.wc.di;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.android.ContributesAndroidInjector;
|
||||
import me.gilo.raison.ui.user.onboarding.SignInActivity;
|
||||
import me.gilo.raison.ui.user.onboarding.SignUpActivity;
|
||||
import me.gilo.wc.MainActivity;
|
||||
import me.gilo.wc.ui.WooDroidActivity;
|
||||
import me.gilo.wc.ui.customer.BasicCustomerDetailsActivity;
|
||||
import me.gilo.wc.ui.customer.BillingAddressActivity;
|
||||
import me.gilo.wc.ui.customer.ProfileActivity;
|
||||
import me.gilo.wc.ui.customer.ShippingAddressActivity;
|
||||
import me.gilo.wc.ui.home.HomeActivity;
|
||||
import me.gilo.wc.ui.onboarding.AnonymousSignInActivity;
|
||||
import me.gilo.wc.ui.product.CartActivity;
|
||||
import me.gilo.wc.ui.product.ProductActivity;
|
||||
import me.gilo.wc.ui.product.ShopActivity;
|
||||
|
||||
@Module
|
||||
abstract class ActivitiesModule {
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract MainActivity contributesMainActivity();
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract ShopActivity contributesShopActivity();
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract ProductActivity contributesProductActivity();
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract HomeActivity contributesHomeActivity();
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract SignInActivity contributesSignInActivity();
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract SignUpActivity contributesSignUpActivity();
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract BasicCustomerDetailsActivity contributesBasicCustomerDetailsActivity();
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract BillingAddressActivity contributesBillingAddressActivity();
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract ShippingAddressActivity contributesShippingAddressActivity();
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract CartActivity contributesCartActivity();
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract ProfileActivity contributesProfileActivity();
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract AnonymousSignInActivity contributesAnonymousSignInActivity();
|
||||
|
||||
}
|
||||
25
app/src/main/java/me/gilo/wc/di/AppComponent.java
Normal file
25
app/src/main/java/me/gilo/wc/di/AppComponent.java
Normal file
@ -0,0 +1,25 @@
|
||||
package me.gilo.wc.di;
|
||||
|
||||
|
||||
import dagger.Component;
|
||||
import dagger.android.AndroidInjector;
|
||||
import dagger.android.DaggerApplication;
|
||||
import dagger.android.support.AndroidSupportInjectionModule;
|
||||
import me.gilo.wc.WcApp;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
|
||||
@Singleton
|
||||
@Component(modules = {
|
||||
AndroidSupportInjectionModule.class,
|
||||
ViewModelModule.class,
|
||||
FirebaseModule.class,
|
||||
ActivitiesModule.class,
|
||||
AppModule.class
|
||||
})
|
||||
interface AppComponent extends AndroidInjector<DaggerApplication> {
|
||||
|
||||
void inject(WcApp app);
|
||||
|
||||
}
|
||||
38
app/src/main/java/me/gilo/wc/di/AppModule.java
Normal file
38
app/src/main/java/me/gilo/wc/di/AppModule.java
Normal file
@ -0,0 +1,38 @@
|
||||
package me.gilo.wc.di;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import me.gilo.wc.WcApp;
|
||||
import me.gilo.woodroid.Woocommerce;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
@Module
|
||||
public class AppModule {
|
||||
|
||||
WcApp app;
|
||||
|
||||
void AppModule(WcApp application) {
|
||||
app = application;
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
WcApp providesApplication() {
|
||||
return app;
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
Woocommerce providesWoocommerce() {
|
||||
Woocommerce woocommerce = Woocommerce.Builder()
|
||||
.setSiteUrl("http://157.230.131.179")
|
||||
.setApiVersion(Woocommerce.API_V3)
|
||||
.setConsumerKey("ck_26c61abd7eeff238d87dc56585bf26cb2d1a1ec3")
|
||||
.setConsumerSecret("cs_062e8e3a7ae0ce08fdebc0c39f8f834d5e87598e")
|
||||
.build();
|
||||
|
||||
return woocommerce;
|
||||
}
|
||||
|
||||
}
|
||||
46
app/src/main/java/me/gilo/wc/di/FirebaseModule.java
Normal file
46
app/src/main/java/me/gilo/wc/di/FirebaseModule.java
Normal file
@ -0,0 +1,46 @@
|
||||
package me.gilo.wc.di;
|
||||
|
||||
import com.google.firebase.firestore.CollectionReference;
|
||||
import com.google.firebase.firestore.FirebaseFirestore;
|
||||
import com.google.firebase.storage.FirebaseStorage;
|
||||
import com.google.firebase.storage.StorageReference;
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
|
||||
@Module
|
||||
class FirebaseModule {
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
FirebaseFirestore providesFirestore() {
|
||||
FirebaseFirestore db = FirebaseFirestore.getInstance();
|
||||
return db;
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
@Named("storage")
|
||||
StorageReference providesStorage() {
|
||||
return FirebaseStorage.getInstance().getReference();
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
@Named("users")
|
||||
CollectionReference providesUsers() {
|
||||
return getFirestoreInstance().collection("users");
|
||||
}
|
||||
|
||||
FirebaseFirestore getFirestoreInstance(){
|
||||
FirebaseFirestore db = FirebaseFirestore.getInstance();
|
||||
|
||||
return db;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
package me.gilo.woodroid.app.di;
|
||||
package me.gilo.wc.di;
|
||||
|
||||
import androidx.lifecycle.ViewModel;
|
||||
import android.arch.lifecycle.ViewModel;
|
||||
import dagger.MapKey;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
58
app/src/main/java/me/gilo/wc/di/ViewModelModule.java
Normal file
58
app/src/main/java/me/gilo/wc/di/ViewModelModule.java
Normal file
@ -0,0 +1,58 @@
|
||||
package me.gilo.wc.di;
|
||||
|
||||
import android.arch.lifecycle.ViewModel;
|
||||
import android.arch.lifecycle.ViewModelProvider;
|
||||
import com.google.firebase.firestore.CollectionReference;
|
||||
import dagger.Binds;
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import dagger.multibindings.IntoMap;
|
||||
import me.gilo.wc.utils.ViewModelFactory;
|
||||
import me.gilo.wc.viewmodels.*;
|
||||
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
|
||||
@SuppressWarnings("WeakerAccess")
|
||||
@Module
|
||||
public abstract class ViewModelModule {
|
||||
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@ViewModelKey(UserViewModel.class)
|
||||
abstract ViewModel bindUserViewModel(UserViewModel viewModel);
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@ViewModelKey(ProductViewModel.class)
|
||||
abstract ViewModel bindProductViewModel(ProductViewModel viewModel);
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@ViewModelKey(CategoryViewModel.class)
|
||||
abstract ViewModel bindCategoryViewModel(CategoryViewModel viewModel);
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@ViewModelKey(CustomerViewModel.class)
|
||||
abstract ViewModel bindCustomerViewModel(CustomerViewModel viewModel);
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@ViewModelKey(CartViewModel.class)
|
||||
abstract ViewModel bindCartViewModel(CartViewModel viewModel);
|
||||
|
||||
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@ViewModelKey(ReviewViewModel.class)
|
||||
abstract ViewModel bindReviewViewModel(ReviewViewModel viewModel);
|
||||
|
||||
@Binds
|
||||
abstract ViewModelProvider.Factory bindViewModelFactory(ViewModelFactory factory);
|
||||
|
||||
|
||||
}
|
||||
@ -1,6 +1,7 @@
|
||||
package me.gilo.woodroid.app.events;
|
||||
package me.gilo.wc.events;
|
||||
|
||||
import me.gilo.woodroid.app.models.CartLineItem;
|
||||
import me.gilo.wc.models.CartLineItem;
|
||||
import me.gilo.woodroid.models.ProductReview;
|
||||
|
||||
public class AddQuantityEvent {
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package me.gilo.woodroid.app.events;
|
||||
package me.gilo.wc.events;
|
||||
|
||||
import me.gilo.woodroid.app.models.CartLineItem;
|
||||
import me.gilo.wc.models.CartLineItem;
|
||||
import me.gilo.woodroid.models.ProductReview;
|
||||
|
||||
public class LessQuantityEvent {
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package me.gilo.woodroid.app.events;
|
||||
package me.gilo.wc.events;
|
||||
|
||||
import me.gilo.woodroid.models.Product;
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package me.gilo.woodroid.app.events;
|
||||
package me.gilo.wc.events;
|
||||
|
||||
import me.gilo.woodroid.models.Product;
|
||||
import me.gilo.woodroid.models.ProductReview;
|
||||
|
||||
public class ReviewEvent {
|
||||
@ -1,6 +1,12 @@
|
||||
package me.gilo.woodroid.app.models;
|
||||
package me.gilo.wc.models;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import me.gilo.woodroid.models.Metum;
|
||||
import me.gilo.woodroid.models.Product;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class CartLineItem extends Model{
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package me.gilo.woodroid.app.models;
|
||||
package me.gilo.wc.models;
|
||||
|
||||
import com.google.firebase.firestore.Exclude;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package me.gilo.woodroid.app.models;
|
||||
package me.gilo.wc.models;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import android.support.annotation.NonNull;
|
||||
import com.google.firebase.firestore.IgnoreExtraProperties;
|
||||
import com.google.firebase.firestore.ServerTimestamp;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package me.gilo.woodroid.app.models;
|
||||
package me.gilo.wc.models;
|
||||
|
||||
import com.google.android.gms.tasks.Task;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package me.gilo.woodroid.app.models;
|
||||
package me.gilo.wc.models;
|
||||
|
||||
public class User{
|
||||
String id;
|
||||
113
app/src/main/java/me/gilo/wc/repo/CartRepository.java
Normal file
113
app/src/main/java/me/gilo/wc/repo/CartRepository.java
Normal file
@ -0,0 +1,113 @@
|
||||
package me.gilo.wc.repo;
|
||||
|
||||
|
||||
import android.arch.lifecycle.Observer;
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.net.Uri;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.util.Log;
|
||||
import com.google.android.gms.tasks.OnCompleteListener;
|
||||
import com.google.android.gms.tasks.OnSuccessListener;
|
||||
import com.google.android.gms.tasks.Task;
|
||||
import com.google.firebase.auth.FirebaseAuth;
|
||||
import com.google.firebase.firestore.*;
|
||||
import com.google.firebase.storage.StorageReference;
|
||||
import com.google.firebase.storage.UploadTask;
|
||||
import me.gilo.wc.common.CompletionGenericLiveData;
|
||||
import me.gilo.wc.common.QueryLiveData;
|
||||
import me.gilo.wc.common.WooLiveData;
|
||||
import me.gilo.wc.models.CartLineItem;
|
||||
import me.gilo.wc.utils.AppUtils;
|
||||
import me.gilo.woodroid.Woocommerce;
|
||||
import me.gilo.woodroid.models.LineItem;
|
||||
import me.gilo.woodroid.models.Product;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class CartRepository {
|
||||
|
||||
@Inject
|
||||
Woocommerce woocommerce;
|
||||
|
||||
private final CollectionReference cart;
|
||||
|
||||
@Inject
|
||||
public CartRepository() {
|
||||
this.cart = FirebaseFirestore.getInstance()
|
||||
.collection("users")
|
||||
.document(FirebaseAuth.getInstance().getCurrentUser().getUid())
|
||||
.collection("cart");
|
||||
|
||||
}
|
||||
|
||||
public QueryLiveData<CartLineItem> cart() {
|
||||
return new QueryLiveData<>(cart, CartLineItem.class);
|
||||
}
|
||||
|
||||
public CompletionGenericLiveData<Void> deleteItem(CartLineItem cartLineItem) {
|
||||
final CompletionGenericLiveData<Void> completion = new CompletionGenericLiveData();
|
||||
cart.document(cartLineItem.getId()).delete().addOnCompleteListener(completion);
|
||||
|
||||
return completion;
|
||||
}
|
||||
|
||||
public CompletionGenericLiveData<Void> setQuantity(CartLineItem cartLineItem, int quantity) {
|
||||
final CompletionGenericLiveData<Void> completion = new CompletionGenericLiveData();
|
||||
cartLineItem.setQuantity(quantity);
|
||||
|
||||
cart.document(cartLineItem.getId()).set(cartLineItem).addOnCompleteListener(completion);
|
||||
|
||||
return completion;
|
||||
}
|
||||
|
||||
public CompletionGenericLiveData<Void> deleteItems() {
|
||||
final CompletionGenericLiveData<Void> completion = new CompletionGenericLiveData();
|
||||
deleteCartItems().addOnCompleteListener(completion);
|
||||
return completion;
|
||||
}
|
||||
|
||||
|
||||
private Task<Void> deleteCartItems() {
|
||||
return cart.getFirestore().runTransaction(transaction -> {
|
||||
cart.get().addOnCompleteListener(task -> {
|
||||
if (task.isSuccessful()) {
|
||||
for (QueryDocumentSnapshot document : task.getResult()) {
|
||||
cart.document(document.getId()).delete();
|
||||
}
|
||||
|
||||
} else {
|
||||
}
|
||||
});
|
||||
|
||||
return null;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public CompletionGenericLiveData<DocumentReference> addToCart(Product product) {
|
||||
final CompletionGenericLiveData<DocumentReference> completion = new CompletionGenericLiveData();
|
||||
|
||||
CartLineItem lineItem = new CartLineItem();
|
||||
lineItem.setProductId(product.getId());
|
||||
lineItem.setProduct(product);
|
||||
lineItem.setQuantity(1);
|
||||
|
||||
cart.add(lineItem).addOnCompleteListener(completion);
|
||||
|
||||
return completion;
|
||||
|
||||
}
|
||||
|
||||
public WooLiveData<Map<String, LineItem>> cart(Context context) {
|
||||
final WooLiveData<Map<String, LineItem>> callBack = new WooLiveData();
|
||||
woocommerce.CartRepository(context).cart().enqueue(callBack);
|
||||
|
||||
return callBack;
|
||||
}
|
||||
|
||||
}
|
||||
73
app/src/main/java/me/gilo/wc/repo/CategoryRepository.java
Normal file
73
app/src/main/java/me/gilo/wc/repo/CategoryRepository.java
Normal file
@ -0,0 +1,73 @@
|
||||
package me.gilo.wc.repo;
|
||||
|
||||
|
||||
import me.gilo.wc.common.WooLiveData;
|
||||
import me.gilo.woodroid.Woocommerce;
|
||||
import me.gilo.woodroid.models.Category;
|
||||
import me.gilo.woodroid.models.filters.ProductCategoryFilter;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.util.List;
|
||||
|
||||
public class CategoryRepository {
|
||||
|
||||
@Inject
|
||||
Woocommerce woocommerce;
|
||||
|
||||
@Inject
|
||||
public CategoryRepository() {
|
||||
}
|
||||
|
||||
|
||||
public WooLiveData<Category> create(Category category) {
|
||||
final WooLiveData<Category> callBack = new WooLiveData();
|
||||
|
||||
woocommerce.CategoryRepository().create(category).enqueue(callBack);
|
||||
return callBack;
|
||||
}
|
||||
|
||||
|
||||
public WooLiveData<Category> category(int id) {
|
||||
final WooLiveData<Category> callBack = new WooLiveData();
|
||||
|
||||
woocommerce.CategoryRepository().category(id).enqueue(callBack);
|
||||
return callBack;
|
||||
}
|
||||
|
||||
public WooLiveData<List<Category>> categories() {
|
||||
final WooLiveData<List<Category>> callBack = new WooLiveData();
|
||||
|
||||
woocommerce.CategoryRepository().categories().enqueue(callBack);
|
||||
return callBack;
|
||||
}
|
||||
|
||||
public WooLiveData<List<Category>> categories(ProductCategoryFilter productCategoryFilter) {
|
||||
final WooLiveData<List<Category>> callBack = new WooLiveData();
|
||||
|
||||
woocommerce.CategoryRepository().categories(productCategoryFilter).enqueue(callBack);
|
||||
return callBack;
|
||||
}
|
||||
|
||||
public WooLiveData<Category> update(int id, Category category) {
|
||||
final WooLiveData<Category> callBack = new WooLiveData();
|
||||
|
||||
woocommerce.CategoryRepository().update(id, category).enqueue(callBack);
|
||||
return callBack;
|
||||
}
|
||||
|
||||
public WooLiveData<Category> delete(int id) {
|
||||
final WooLiveData<Category> callBack = new WooLiveData();
|
||||
|
||||
woocommerce.CategoryRepository().delete(id).enqueue(callBack);
|
||||
return callBack;
|
||||
}
|
||||
|
||||
public WooLiveData<Category> delete(int id, boolean force) {
|
||||
final WooLiveData<Category> callBack = new WooLiveData();
|
||||
|
||||
woocommerce.CategoryRepository().delete(id, force).enqueue(callBack);
|
||||
return callBack;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
83
app/src/main/java/me/gilo/wc/repo/CustomerRepository.java
Normal file
83
app/src/main/java/me/gilo/wc/repo/CustomerRepository.java
Normal file
@ -0,0 +1,83 @@
|
||||
package me.gilo.wc.repo;
|
||||
|
||||
|
||||
import com.google.firebase.auth.FirebaseAuth;
|
||||
import me.gilo.wc.common.WooLiveData;
|
||||
import me.gilo.woodroid.Woocommerce;
|
||||
import me.gilo.woodroid.models.Customer;
|
||||
import me.gilo.woodroid.models.Customer;
|
||||
import me.gilo.woodroid.models.filters.CustomerFilter;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.util.List;
|
||||
|
||||
public class CustomerRepository {
|
||||
|
||||
@Inject
|
||||
Woocommerce woocommerce;
|
||||
|
||||
|
||||
@Inject
|
||||
public CustomerRepository() {
|
||||
|
||||
}
|
||||
|
||||
public WooLiveData<Customer> create(Customer customer) {
|
||||
final WooLiveData<Customer> callBack = new WooLiveData();
|
||||
woocommerce.CustomerRepository().create(customer).enqueue(callBack);
|
||||
return callBack;
|
||||
}
|
||||
|
||||
public WooLiveData<List<Customer>> currentCustomer() {
|
||||
final WooLiveData<List<Customer>> callBack = new WooLiveData();
|
||||
CustomerFilter customerFilter = new CustomerFilter();
|
||||
customerFilter.setEmail(FirebaseAuth.getInstance().getCurrentUser().getEmail());
|
||||
|
||||
woocommerce.CustomerRepository().customers(customerFilter).enqueue(callBack);
|
||||
return callBack;
|
||||
}
|
||||
|
||||
|
||||
public WooLiveData<Customer> customer(int id) {
|
||||
final WooLiveData<Customer> callBack = new WooLiveData();
|
||||
woocommerce.CustomerRepository().customer(id).enqueue(callBack);
|
||||
return callBack;
|
||||
}
|
||||
|
||||
public WooLiveData<List<Customer>> customers() {
|
||||
final WooLiveData<List<Customer>> callBack = new WooLiveData();
|
||||
|
||||
woocommerce.CustomerRepository().customers().enqueue(callBack);
|
||||
|
||||
return callBack;
|
||||
}
|
||||
|
||||
public WooLiveData<List<Customer>> customers(CustomerFilter customerFilter) {
|
||||
final WooLiveData<List<Customer>> callBack = new WooLiveData();
|
||||
woocommerce.CustomerRepository().customers(customerFilter).enqueue(callBack);
|
||||
return callBack;
|
||||
}
|
||||
|
||||
public WooLiveData<Customer> update(int id, Customer customer) {
|
||||
final WooLiveData<Customer> callBack = new WooLiveData();
|
||||
woocommerce.CustomerRepository().update(id, customer).enqueue(callBack);
|
||||
|
||||
return callBack;
|
||||
}
|
||||
|
||||
public WooLiveData<Customer> delete(int id) {
|
||||
final WooLiveData<Customer> callBack = new WooLiveData();
|
||||
woocommerce.CustomerRepository().delete(id).enqueue(callBack);
|
||||
|
||||
return callBack;
|
||||
}
|
||||
|
||||
public WooLiveData<Customer> delete(int id, boolean force) {
|
||||
final WooLiveData<Customer> callBack = new WooLiveData();
|
||||
woocommerce.CustomerRepository().delete(id, force).enqueue(callBack);
|
||||
|
||||
return callBack;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
111
app/src/main/java/me/gilo/wc/repo/FirebaseRepository.java
Normal file
111
app/src/main/java/me/gilo/wc/repo/FirebaseRepository.java
Normal file
@ -0,0 +1,111 @@
|
||||
package me.gilo.wc.repo;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import android.util.Log;
|
||||
import com.google.android.gms.tasks.Continuation;
|
||||
import com.google.android.gms.tasks.OnFailureListener;
|
||||
import com.google.android.gms.tasks.Task;
|
||||
import com.google.firebase.firestore.CollectionReference;
|
||||
import com.google.firebase.firestore.DocumentReference;
|
||||
import com.google.firebase.firestore.DocumentSnapshot;
|
||||
import com.google.firebase.firestore.FirebaseFirestore;
|
||||
import me.gilo.wc.models.Identifiable;
|
||||
import me.gilo.wc.models.Repository;
|
||||
|
||||
|
||||
/**
|
||||
* Manages data access for Firebase
|
||||
*/
|
||||
public class FirebaseRepository<TEntity extends Identifiable<String>> implements Repository<TEntity, String> {
|
||||
|
||||
private static final String TAG = "FirebaseRepository";
|
||||
|
||||
private final Class<TEntity> entityClass;
|
||||
|
||||
private final CollectionReference collectionReference;
|
||||
private final String collectionName;
|
||||
|
||||
|
||||
public FirebaseRepository(Class<TEntity> entityClass, String collectionName) {
|
||||
this.collectionName = collectionName;
|
||||
this.entityClass = entityClass;
|
||||
|
||||
FirebaseFirestore db = FirebaseFirestore.getInstance();
|
||||
this.collectionReference = db.collection(this.collectionName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Task<Boolean> exists(final String documentName) {
|
||||
DocumentReference documentReference = collectionReference.document(documentName);
|
||||
Log.i(TAG, "Checking existence of '" + documentName + "' in '" + collectionName + "'.");
|
||||
|
||||
return documentReference.get().continueWith(new Continuation<DocumentSnapshot, Boolean>() {
|
||||
@Override
|
||||
public Boolean then(@NonNull Task<DocumentSnapshot> task) {
|
||||
Log.d(TAG,"Checking if '" + documentName + "' exists in '" + collectionName +"'.");
|
||||
return task.getResult().exists();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Task<TEntity> get(String id) {
|
||||
final String documentName = id;
|
||||
DocumentReference documentReference = collectionReference.document(documentName);
|
||||
Log.i(TAG, "Getting '" + documentName + "' in '" + collectionName + "'.");
|
||||
|
||||
return documentReference.get().continueWith(new Continuation<DocumentSnapshot, TEntity>() {
|
||||
@Override
|
||||
public TEntity then(@NonNull Task<DocumentSnapshot> task) throws Exception {
|
||||
DocumentSnapshot documentSnapshot = task.getResult();
|
||||
if (documentSnapshot.exists()) {
|
||||
return documentSnapshot.toObject(entityClass);
|
||||
} else {
|
||||
Log.d(TAG, "Document '" + documentName + "' does not exist in '" + collectionName + "'.");
|
||||
return entityClass.newInstance();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Task<Void> create(TEntity entity) {
|
||||
final String documentName = entity.getEntityKey();
|
||||
DocumentReference documentReference = collectionReference.document(documentName);
|
||||
Log.i(TAG, "Creating '" + documentName + "' in '" + collectionName + "'.");
|
||||
return documentReference.set(entity).addOnFailureListener(new OnFailureListener() {
|
||||
@Override
|
||||
public void onFailure(@NonNull Exception e) {
|
||||
Log.d(TAG, "There was an error creating '" + documentName + "' in '" + collectionName + "'!", e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Task<Void> update(TEntity entity) {
|
||||
final String documentName = entity.getEntityKey();
|
||||
DocumentReference documentReference = collectionReference.document(documentName);
|
||||
Log.i(TAG, "Updating '" + documentName + "' in '" + collectionName + "'.");
|
||||
|
||||
return documentReference.set(entity).addOnFailureListener(new OnFailureListener() {
|
||||
@Override
|
||||
public void onFailure(@NonNull Exception e) {
|
||||
Log.d(TAG, "There was an error updating '" + documentName + "' in '" + collectionName + "'.", e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Task<Void> delete(final String documentName) {
|
||||
DocumentReference documentReference = collectionReference.document(documentName);
|
||||
Log.i(TAG, "Deleting '" + documentName + "' in '" + collectionName + "'.");
|
||||
|
||||
return documentReference.delete().addOnFailureListener(new OnFailureListener() {
|
||||
@Override
|
||||
public void onFailure(@NonNull Exception e) {
|
||||
Log.d(TAG, "There was an error deleting '" + documentName + "' in '" + collectionName + "'.", e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
package me.gilo.woodroid.app.repo;
|
||||
package me.gilo.wc.repo;
|
||||
|
||||
import com.google.android.gms.tasks.OnFailureListener;
|
||||
import com.google.android.gms.tasks.OnSuccessListener;
|
||||
@ -7,10 +7,10 @@ import com.google.firebase.auth.FirebaseAuth;
|
||||
import com.google.firebase.firestore.CollectionReference;
|
||||
import com.google.firebase.firestore.DocumentReference;
|
||||
import com.google.firebase.storage.StorageReference;
|
||||
import me.gilo.woodroid.app.common.CompletionGenericLiveData;
|
||||
import me.gilo.woodroid.app.common.CompletionLiveData;
|
||||
import me.gilo.woodroid.app.common.DocumentLiveData;
|
||||
import me.gilo.woodroid.app.models.User;
|
||||
import me.gilo.wc.common.CompletionGenericLiveData;
|
||||
import me.gilo.wc.common.CompletionLiveData;
|
||||
import me.gilo.wc.common.DocumentLiveData;
|
||||
import me.gilo.wc.models.User;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
|
||||
@ -38,11 +38,6 @@ public class FirebaseUserRepository extends FirebaseRepository {
|
||||
|
||||
}
|
||||
|
||||
public void logout() {
|
||||
FirebaseAuth auth = FirebaseAuth.getInstance();
|
||||
auth.signOut();
|
||||
}
|
||||
|
||||
|
||||
public CompletionGenericLiveData<AuthResult> anonymousSignIn() {
|
||||
final CompletionGenericLiveData<AuthResult> completion = new CompletionGenericLiveData();
|
||||
@ -1,7 +1,7 @@
|
||||
package me.gilo.woodroid.app.repo;
|
||||
package me.gilo.wc.repo;
|
||||
|
||||
|
||||
import me.gilo.woodroid.app.common.WooLiveData;
|
||||
import me.gilo.wc.common.WooLiveData;
|
||||
import me.gilo.woodroid.Woocommerce;
|
||||
import me.gilo.woodroid.models.Order;
|
||||
import me.gilo.woodroid.models.filters.OrderFilter;
|
||||
@ -23,7 +23,7 @@ public class OrderRepository {
|
||||
public WooLiveData<Order> addToCart(int productId) {
|
||||
final WooLiveData<Order> callBack = new WooLiveData();
|
||||
|
||||
woocommerce.OrderRepository().addToCart(productId, null).enqueue(callBack);
|
||||
woocommerce.OrderRepository().addToCart(productId).enqueue(callBack);
|
||||
return callBack;
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package me.gilo.woodroid.app.repo;
|
||||
package me.gilo.wc.repo;
|
||||
|
||||
|
||||
import me.gilo.woodroid.app.common.WooLiveData;
|
||||
import me.gilo.wc.common.WooLiveData;
|
||||
import me.gilo.woodroid.Woocommerce;
|
||||
import me.gilo.woodroid.models.Product;
|
||||
import me.gilo.woodroid.models.ProductReview;
|
||||
@ -1,9 +1,11 @@
|
||||
package me.gilo.woodroid.app.repo;
|
||||
package me.gilo.wc.repo;
|
||||
|
||||
|
||||
import me.gilo.woodroid.app.common.WooLiveData;
|
||||
import me.gilo.wc.common.WooLiveData;
|
||||
import me.gilo.woodroid.Woocommerce;
|
||||
import me.gilo.woodroid.models.Product;
|
||||
import me.gilo.woodroid.models.ProductReview;
|
||||
import me.gilo.woodroid.models.filters.ProductFilter;
|
||||
import me.gilo.woodroid.models.filters.ProductReviewFilter;
|
||||
|
||||
import javax.inject.Inject;
|
||||
@ -1,10 +1,9 @@
|
||||
package me.gilo.woodroid.app.ui
|
||||
package me.gilo.wc.ui
|
||||
|
||||
import android.content.Context
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import io.github.inflationx.viewpump.ViewPumpContextWrapper
|
||||
import me.gilo.woodroid.app.Config
|
||||
import me.gilo.woodroid.app.ui.state.ProgressDialogFragment
|
||||
import me.gilo.wc.ui.state.ProgressDialogFragment
|
||||
import me.gilo.woodroid.Woocommerce
|
||||
|
||||
open class BaseActivity : AppCompatActivity() {
|
||||
@ -12,10 +11,10 @@ open class BaseActivity : AppCompatActivity() {
|
||||
private lateinit var progressDialog : ProgressDialogFragment
|
||||
|
||||
val woocommerce = Woocommerce.Builder()
|
||||
.setSiteUrl(Config.siteUrl)
|
||||
.setSiteUrl("http://157.230.131.179")
|
||||
.setApiVersion(Woocommerce.API_V3)
|
||||
.setConsumerKey(Config.consumerKey)
|
||||
.setConsumerSecret(Config.consumerSecret)
|
||||
.setConsumerKey("ck_26c61abd7eeff238d87dc56585bf26cb2d1a1ec3")
|
||||
.setConsumerSecret("cs_062e8e3a7ae0ce08fdebc0c39f8f834d5e87598e")
|
||||
.build()
|
||||
|
||||
|
||||
@ -1,12 +1,16 @@
|
||||
package me.gilo.woodroid.app.ui
|
||||
package me.gilo.wc.ui
|
||||
|
||||
import android.app.Activity
|
||||
import android.os.Bundle
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import me.gilo.woodroid.app.R
|
||||
import android.support.design.widget.Snackbar
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.LinearLayoutManager
|
||||
import android.support.v7.widget.RecyclerView
|
||||
import me.gilo.wc.R
|
||||
|
||||
import kotlinx.android.synthetic.main.activity_menu.*
|
||||
import kotlinx.android.synthetic.main.content_menu.*
|
||||
import me.gilo.woodroid.app.adapter.MenuAdapter
|
||||
import me.gilo.wc.adapter.MenuAdapter
|
||||
import java.util.ArrayList
|
||||
|
||||
class MenuActivity : BaseActivity() {
|
||||
@ -18,11 +22,7 @@ class MenuActivity : BaseActivity() {
|
||||
|
||||
title = "Menu"
|
||||
|
||||
val layoutManager = LinearLayoutManager(
|
||||
baseContext,
|
||||
LinearLayoutManager.VERTICAL,
|
||||
false
|
||||
)
|
||||
val layoutManager = LinearLayoutManager(baseContext, LinearLayoutManager.VERTICAL, false)
|
||||
rvMenu.layoutManager = layoutManager
|
||||
rvMenu.isNestedScrollingEnabled = false
|
||||
|
||||
50
app/src/main/java/me/gilo/wc/ui/WooDroidActivity.kt
Normal file
50
app/src/main/java/me/gilo/wc/ui/WooDroidActivity.kt
Normal file
@ -0,0 +1,50 @@
|
||||
package me.gilo.wc.ui
|
||||
|
||||
import android.arch.lifecycle.ViewModel
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.support.design.widget.Snackbar
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import android.widget.Toast
|
||||
import io.github.inflationx.viewpump.ViewPumpContextWrapper
|
||||
import me.gilo.wc.R
|
||||
|
||||
import kotlinx.android.synthetic.main.activity_basic_customer_details.*
|
||||
import me.gilo.raison.ui.user.onboarding.SignInActivity
|
||||
import me.gilo.wc.common.BaseActivity
|
||||
import me.gilo.wc.ui.state.ProgressDialogFragment
|
||||
import me.gilo.wc.viewmodels.CustomerViewModel
|
||||
import me.gilo.wc.viewmodels.UserViewModel
|
||||
import java.util.regex.Matcher
|
||||
import java.util.regex.Pattern
|
||||
|
||||
abstract class WooDroidActivity<T : ViewModel> : BaseActivity() {
|
||||
|
||||
|
||||
abstract var viewModel : T
|
||||
private lateinit var progressDialog: ProgressDialogFragment
|
||||
|
||||
override fun attachBaseContext(newBase: Context) {
|
||||
super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase))
|
||||
}
|
||||
|
||||
fun showLoading() {
|
||||
showLoading("Please wait", "This will only take a second")
|
||||
}
|
||||
|
||||
fun showLoading(title: String, message: String) {
|
||||
val manager = supportFragmentManager
|
||||
progressDialog = ProgressDialogFragment.newInstance(title, message)
|
||||
progressDialog.isCancelable = false
|
||||
progressDialog.show(manager, "progress")
|
||||
}
|
||||
|
||||
fun stopShowingLoading() {
|
||||
progressDialog.dismiss()
|
||||
}
|
||||
|
||||
fun toast(text : String){
|
||||
Toast.makeText(baseContext, text, Toast.LENGTH_LONG).show()
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,8 +1,9 @@
|
||||
package me.gilo.woodroid.app.ui.checkout
|
||||
package me.gilo.wc.ui.checkout
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import me.gilo.woodroid.app.R
|
||||
import android.support.design.widget.Snackbar
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import me.gilo.wc.R
|
||||
|
||||
import kotlinx.android.synthetic.main.activity_checkout.*
|
||||
|
||||
@ -13,6 +14,10 @@ class CheckoutActivity : AppCompatActivity() {
|
||||
setContentView(R.layout.activity_checkout)
|
||||
setSupportActionBar(toolbar)
|
||||
|
||||
fab.setOnClickListener { view ->
|
||||
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
|
||||
.setAction("Action", null).show()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,10 +1,10 @@
|
||||
package me.gilo.woodroid.app.ui.coupon
|
||||
package me.gilo.wc.ui.coupon
|
||||
|
||||
import android.os.Bundle
|
||||
import kotlinx.android.synthetic.main.activity_add_coupon.*
|
||||
import kotlinx.android.synthetic.main.content_add_coupon.*
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.ui.BaseActivity
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.ui.BaseActivity
|
||||
import me.gilo.woodroid.models.Coupon
|
||||
import retrofit2.Call
|
||||
import retrofit2.Callback
|
||||
@ -1,11 +1,11 @@
|
||||
package me.gilo.woodroid.app.ui.coupon
|
||||
package me.gilo.wc.ui.coupon
|
||||
|
||||
import android.os.Bundle
|
||||
import android.widget.Toast
|
||||
import kotlinx.android.synthetic.main.activity_coupon.*
|
||||
import kotlinx.android.synthetic.main.content_coupon.*
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.ui.BaseActivity
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.ui.BaseActivity
|
||||
import me.gilo.woodroid.models.Coupon
|
||||
import retrofit2.Call
|
||||
import retrofit2.Callback
|
||||
@ -50,7 +50,7 @@ class CouponActivity : BaseActivity() {
|
||||
override fun onResponse(call: Call<Coupon>, response: Response<Coupon>) {
|
||||
val coupon = response.body()!!
|
||||
|
||||
etCode.setText(coupon.code?.toUpperCase())
|
||||
etCode.setText(coupon.code.toUpperCase())
|
||||
etDescription.setText(coupon.description)
|
||||
|
||||
stopShowingLoading()
|
||||
@ -70,7 +70,7 @@ class CouponActivity : BaseActivity() {
|
||||
if (response.isSuccessful) {
|
||||
val coupon = response.body()!!
|
||||
|
||||
etCode.setText(coupon.code?.toUpperCase())
|
||||
etCode.setText(coupon.code.toUpperCase())
|
||||
etDescription.setText(coupon.description)
|
||||
|
||||
finish()
|
||||
@ -95,7 +95,7 @@ class CouponActivity : BaseActivity() {
|
||||
override fun onResponse(call: Call<Coupon>, response: Response<Coupon>) {
|
||||
val coupon = response.body()!!
|
||||
|
||||
etCode.setText(coupon.code?.toUpperCase())
|
||||
etCode.setText(coupon.code.toUpperCase())
|
||||
etDescription.setText(coupon.description)
|
||||
|
||||
stopShowingLoading()
|
||||
@ -1,13 +1,13 @@
|
||||
package me.gilo.woodroid.app.ui.coupon
|
||||
package me.gilo.wc.ui.coupon
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import android.support.v7.widget.LinearLayoutManager
|
||||
import kotlinx.android.synthetic.main.activity_coupons.*
|
||||
import kotlinx.android.synthetic.main.content_coupons.*
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.adapter.CouponAdapter
|
||||
import me.gilo.woodroid.app.ui.BaseActivity
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.adapter.CouponAdapter
|
||||
import me.gilo.wc.ui.BaseActivity
|
||||
import me.gilo.woodroid.models.Coupon
|
||||
import me.gilo.woodroid.models.filters.CouponFilter
|
||||
import retrofit2.Call
|
||||
@ -28,11 +28,7 @@ class CouponsActivity : BaseActivity() {
|
||||
|
||||
title = "Coupons"
|
||||
|
||||
val layoutManager = LinearLayoutManager(
|
||||
baseContext,
|
||||
LinearLayoutManager.VERTICAL,
|
||||
false
|
||||
)
|
||||
val layoutManager = LinearLayoutManager(baseContext, LinearLayoutManager.VERTICAL, false)
|
||||
rvCoupons.layoutManager = layoutManager
|
||||
rvCoupons.isNestedScrollingEnabled = false
|
||||
|
||||
@ -52,7 +48,7 @@ class CouponsActivity : BaseActivity() {
|
||||
//Not best practise, but works for purposes of demo
|
||||
private fun coupons() {
|
||||
val filter = CouponFilter()
|
||||
filter.setSearch("FEB")
|
||||
filter.search = "FEB"
|
||||
|
||||
woocommerce.CouponRepository().coupons(filter).enqueue(object : Callback<List<Coupon>> {
|
||||
override fun onResponse(call: Call<List<Coupon>>, response: Response<List<Coupon>>) {
|
||||
@ -1,15 +1,20 @@
|
||||
package me.gilo.woodroid.app.ui.customer
|
||||
package me.gilo.wc.ui.customer
|
||||
|
||||
import androidx.lifecycle.Observer
|
||||
import android.arch.lifecycle.Observer
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.support.v4.content.ContextCompat.startActivity
|
||||
import android.widget.Toast
|
||||
import com.google.firebase.auth.FirebaseAuth
|
||||
import io.github.inflationx.viewpump.ViewPumpContextWrapper
|
||||
import kotlinx.android.synthetic.main.customer_basic_details.*
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.common.Status
|
||||
import me.gilo.woodroid.app.ui.WooDroidActivity
|
||||
import me.gilo.woodroid.app.viewmodels.CustomerViewModel
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.common.Status
|
||||
import me.gilo.wc.models.User
|
||||
import me.gilo.wc.ui.WooDroidActivity
|
||||
import me.gilo.wc.ui.home.HomeActivity
|
||||
import me.gilo.wc.viewmodels.CustomerViewModel
|
||||
import me.gilo.woodroid.models.Customer
|
||||
import java.util.regex.Matcher
|
||||
import java.util.regex.Pattern
|
||||
@ -17,13 +22,11 @@ import java.util.regex.Pattern
|
||||
class BasicCustomerDetailsActivity : WooDroidActivity<CustomerViewModel>() {
|
||||
|
||||
|
||||
override lateinit var viewModel: CustomerViewModel
|
||||
override lateinit var viewModel : CustomerViewModel
|
||||
private val pattern = Pattern.compile(EMAIL_PATTERN)
|
||||
private var matcher: Matcher? = null
|
||||
lateinit var customer: Customer
|
||||
|
||||
var newCustomer = false
|
||||
|
||||
override fun attachBaseContext(newBase: Context) {
|
||||
super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase))
|
||||
}
|
||||
@ -37,25 +40,20 @@ class BasicCustomerDetailsActivity : WooDroidActivity<CustomerViewModel>() {
|
||||
|
||||
customer()
|
||||
|
||||
flSave.setOnClickListener {
|
||||
if (newCustomer) {
|
||||
create()
|
||||
} else {
|
||||
save()
|
||||
}
|
||||
}
|
||||
flSave.setOnClickListener{save()}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private fun customer() {
|
||||
viewModel.currentCustomer().observe(this, Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
viewModel.currentCustomer().observe(this, Observer {
|
||||
response->
|
||||
when (response!!.status()){
|
||||
Status.LOADING ->{
|
||||
showLoading("Retrieve customer details", "This will only take a short while")
|
||||
}
|
||||
|
||||
Status.SUCCESS -> {
|
||||
Status.SUCCESS ->{
|
||||
stopShowingLoading()
|
||||
customer = response.data()[0]
|
||||
|
||||
@ -64,18 +62,15 @@ class BasicCustomerDetailsActivity : WooDroidActivity<CustomerViewModel>() {
|
||||
etLastName.setText(customer.lastName)
|
||||
etUsername.setText(customer.username)
|
||||
|
||||
newCustomer = false
|
||||
}
|
||||
|
||||
Status.ERROR -> {
|
||||
Status.ERROR ->{
|
||||
stopShowingLoading()
|
||||
Toast.makeText(baseContext, response.error().message.toString(), Toast.LENGTH_LONG).show()
|
||||
}
|
||||
|
||||
Status.EMPTY -> {
|
||||
Status.EMPTY ->{
|
||||
stopShowingLoading()
|
||||
|
||||
newCustomer = true
|
||||
}
|
||||
|
||||
}
|
||||
@ -95,23 +90,24 @@ class BasicCustomerDetailsActivity : WooDroidActivity<CustomerViewModel>() {
|
||||
customer.lastName = lastName
|
||||
customer.username = username
|
||||
|
||||
viewModel.update(customer.id, customer).observe(this, Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
viewModel.update(customer.id, customer).observe(this, Observer {
|
||||
response->
|
||||
when (response!!.status()){
|
||||
Status.LOADING ->{
|
||||
showLoading("Uploading account details", "This will only take a short while")
|
||||
}
|
||||
|
||||
Status.SUCCESS -> {
|
||||
Status.SUCCESS ->{
|
||||
stopShowingLoading()
|
||||
finish()
|
||||
}
|
||||
|
||||
Status.ERROR -> {
|
||||
Status.ERROR ->{
|
||||
stopShowingLoading()
|
||||
Toast.makeText(baseContext, response.error().message.toString(), Toast.LENGTH_LONG).show()
|
||||
}
|
||||
|
||||
Status.EMPTY -> {
|
||||
Status.EMPTY ->{
|
||||
|
||||
}
|
||||
|
||||
@ -119,47 +115,6 @@ class BasicCustomerDetailsActivity : WooDroidActivity<CustomerViewModel>() {
|
||||
})
|
||||
|
||||
|
||||
} else {
|
||||
Toast.makeText(this, "Please correct the information entered", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
|
||||
private fun create() {
|
||||
if (validates()) {
|
||||
val email = etEmail.text.toString()
|
||||
val firstName = etFirstName.text.toString()
|
||||
val lastName = etLastName.text.toString()
|
||||
val username = etUsername.text.toString()
|
||||
|
||||
var customer = Customer()
|
||||
customer.email = email
|
||||
customer.firstName = firstName
|
||||
customer.lastName = lastName
|
||||
customer.username = username
|
||||
|
||||
viewModel.create(customer).observe(this, Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
showLoading("Uploading account details", "This will only take a short while")
|
||||
}
|
||||
|
||||
Status.SUCCESS -> {
|
||||
stopShowingLoading()
|
||||
finish()
|
||||
}
|
||||
|
||||
Status.ERROR -> {
|
||||
stopShowingLoading()
|
||||
Toast.makeText(baseContext, response.error().message.toString(), Toast.LENGTH_LONG).show()
|
||||
}
|
||||
|
||||
Status.EMPTY -> {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
} else {
|
||||
Toast.makeText(this, "Please correct the information entered", Toast.LENGTH_SHORT).show()
|
||||
@ -205,8 +160,7 @@ class BasicCustomerDetailsActivity : WooDroidActivity<CustomerViewModel>() {
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val EMAIL_PATTERN =
|
||||
"^[a-zA-Z0-9#_~!$&'()*+,;=:.\"(),:;<>@\\[\\]\\\\]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*$"
|
||||
private const val EMAIL_PATTERN = "^[a-zA-Z0-9#_~!$&'()*+,;=:.\"(),:;<>@\\[\\]\\\\]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*$"
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,16 +1,18 @@
|
||||
package me.gilo.woodroid.app.ui.customer
|
||||
package me.gilo.wc.ui.customer
|
||||
|
||||
import androidx.lifecycle.Observer
|
||||
import android.arch.lifecycle.Observer
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.widget.Toast
|
||||
import com.google.firebase.auth.FirebaseAuth
|
||||
import io.github.inflationx.viewpump.ViewPumpContextWrapper
|
||||
import kotlinx.android.synthetic.main.customer_billing_address.*
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.common.Status
|
||||
import me.gilo.woodroid.app.ui.WooDroidActivity
|
||||
import me.gilo.woodroid.app.viewmodels.CustomerViewModel
|
||||
import kotlinx.android.synthetic.main.drawer_filter.view.*
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.common.Status
|
||||
import me.gilo.wc.ui.WooDroidActivity
|
||||
import me.gilo.wc.viewmodels.CustomerViewModel
|
||||
import me.gilo.woodroid.models.BillingAddress
|
||||
import me.gilo.woodroid.models.Customer
|
||||
|
||||
@ -106,7 +108,7 @@ class BillingAddressActivity : WooDroidActivity<CustomerViewModel>() {
|
||||
customer.billingAddress.country = country
|
||||
customer.billingAddress.phone = phone
|
||||
|
||||
customer.billingAddress.email = FirebaseAuth.getInstance().currentUser!!.email!!
|
||||
customer.billingAddress.email = FirebaseAuth.getInstance().currentUser!!.email
|
||||
|
||||
viewModel.update(customer.id, customer).observe(this, Observer {
|
||||
response->
|
||||
@ -1,6 +1,6 @@
|
||||
package me.gilo.woodroid.app.ui.customer
|
||||
package me.gilo.wc.ui.customer
|
||||
|
||||
import androidx.lifecycle.Observer
|
||||
import android.arch.lifecycle.Observer
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
@ -8,10 +8,10 @@ import android.widget.Toast
|
||||
import io.github.inflationx.viewpump.ViewPumpContextWrapper
|
||||
import kotlinx.android.synthetic.main.activity_profile.*
|
||||
import kotlinx.android.synthetic.main.content_profile.*
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.common.Status
|
||||
import me.gilo.woodroid.app.ui.WooDroidActivity
|
||||
import me.gilo.woodroid.app.viewmodels.CustomerViewModel
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.common.Status
|
||||
import me.gilo.wc.ui.WooDroidActivity
|
||||
import me.gilo.wc.viewmodels.CustomerViewModel
|
||||
|
||||
class ProfileActivity : WooDroidActivity<CustomerViewModel>() {
|
||||
|
||||
@ -1,15 +1,16 @@
|
||||
package me.gilo.woodroid.app.ui.customer
|
||||
package me.gilo.wc.ui.customer
|
||||
|
||||
import androidx.lifecycle.Observer
|
||||
import android.arch.lifecycle.Observer
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.widget.Toast
|
||||
import io.github.inflationx.viewpump.ViewPumpContextWrapper
|
||||
import kotlinx.android.synthetic.main.customer_shipping_address.*
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.common.Status
|
||||
import me.gilo.woodroid.app.ui.WooDroidActivity
|
||||
import me.gilo.woodroid.app.viewmodels.CustomerViewModel
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.common.Status
|
||||
import me.gilo.wc.ui.WooDroidActivity
|
||||
import me.gilo.wc.viewmodels.CustomerViewModel
|
||||
import me.gilo.woodroid.models.Customer
|
||||
import me.gilo.woodroid.models.ShippingAddress
|
||||
|
||||
@ -1,16 +1,16 @@
|
||||
package me.gilo.woodroid.app.ui.home
|
||||
package me.gilo.wc.ui.home
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import android.support.v4.app.Fragment
|
||||
import android.support.v7.widget.LinearLayoutManager
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import kotlinx.android.synthetic.main.fragment_category.*
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.adapter.CategoryAdapter
|
||||
import me.gilo.woodroid.app.common.Status
|
||||
import me.gilo.woodroid.app.viewmodels.CategoryViewModel
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.adapter.CategoryAdapter
|
||||
import me.gilo.wc.common.Status
|
||||
import me.gilo.wc.viewmodels.CategoryViewModel
|
||||
import me.gilo.woodroid.models.Category
|
||||
import me.gilo.woodroid.models.filters.ProductCategoryFilter
|
||||
import java.util.*
|
||||
@ -46,11 +46,7 @@ class CategoryFragment : Fragment() {
|
||||
|
||||
viewModel = (activity as HomeActivity).getViewModel(CategoryViewModel::class.java)
|
||||
|
||||
val layoutManager = LinearLayoutManager(
|
||||
activity,
|
||||
LinearLayoutManager.VERTICAL,
|
||||
false
|
||||
)
|
||||
val layoutManager = LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)
|
||||
rvCategory.layoutManager = layoutManager
|
||||
rvCategory.isNestedScrollingEnabled = false
|
||||
|
||||
@ -66,9 +62,9 @@ class CategoryFragment : Fragment() {
|
||||
private fun categories() {
|
||||
|
||||
val filter = ProductCategoryFilter()
|
||||
filter.setPer_page(50)
|
||||
filter.per_page = 50
|
||||
|
||||
viewModel.categories(filter).observe(this, androidx.lifecycle.Observer { response ->
|
||||
viewModel.categories(filter).observe(this, android.arch.lifecycle.Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
}
|
||||
@ -1,15 +1,19 @@
|
||||
package me.gilo.woodroid.app.ui.home
|
||||
package me.gilo.wc.ui.home
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import com.google.android.material.bottomnavigation.BottomNavigationView
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.support.design.widget.BottomNavigationView
|
||||
import android.support.v4.app.Fragment
|
||||
import io.github.inflationx.viewpump.ViewPumpContextWrapper
|
||||
import kotlinx.android.synthetic.main.activity_home.*
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.ui.WooDroidActivity
|
||||
import me.gilo.woodroid.app.viewmodels.CartViewModel
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.common.BaseActivity
|
||||
|
||||
class HomeActivity : WooDroidActivity<CartViewModel>() {
|
||||
override lateinit var viewModel: CartViewModel
|
||||
class HomeActivity : BaseActivity() {
|
||||
|
||||
override fun attachBaseContext(newBase: Context) {
|
||||
super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase))
|
||||
}
|
||||
|
||||
private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
|
||||
|
||||
@ -38,8 +42,6 @@ class HomeActivity : WooDroidActivity<CartViewModel>() {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_home)
|
||||
|
||||
setSupportActionBar(toolbar)
|
||||
|
||||
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
|
||||
|
||||
val transaction = supportFragmentManager.beginTransaction()
|
||||
@ -1,17 +1,17 @@
|
||||
package me.gilo.woodroid.app.ui.home
|
||||
package me.gilo.wc.ui.home
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import android.support.v4.app.Fragment
|
||||
import android.support.v7.widget.LinearLayoutManager
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import com.squareup.picasso.Picasso
|
||||
import kotlinx.android.synthetic.main.fragment_home.*
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.adapter.HomeProductAdapter
|
||||
import me.gilo.woodroid.app.common.Status
|
||||
import me.gilo.woodroid.app.viewmodels.ProductViewModel
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.adapter.HomeProductAdapter
|
||||
import me.gilo.wc.common.Status
|
||||
import me.gilo.wc.viewmodels.ProductViewModel
|
||||
import me.gilo.woodroid.models.Product
|
||||
import me.gilo.woodroid.models.filters.ProductFilter
|
||||
import java.util.*
|
||||
@ -60,11 +60,7 @@ class HomeFragment : Fragment() {
|
||||
}
|
||||
|
||||
private fun setUpProducts() {
|
||||
val layoutManager = LinearLayoutManager(
|
||||
activity,
|
||||
LinearLayoutManager.HORIZONTAL,
|
||||
false
|
||||
)
|
||||
val layoutManager = LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, false)
|
||||
rvShop.layoutManager = layoutManager
|
||||
rvShop.isNestedScrollingEnabled = false
|
||||
|
||||
@ -78,11 +74,7 @@ class HomeFragment : Fragment() {
|
||||
|
||||
|
||||
private fun setUpHoodies() {
|
||||
val layoutManager = LinearLayoutManager(
|
||||
activity,
|
||||
LinearLayoutManager.HORIZONTAL,
|
||||
false
|
||||
)
|
||||
val layoutManager = LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, false)
|
||||
|
||||
rvHoodies.layoutManager = layoutManager
|
||||
rvHoodies.isNestedScrollingEnabled = false
|
||||
@ -110,7 +102,7 @@ class HomeFragment : Fragment() {
|
||||
}
|
||||
|
||||
private fun products() {
|
||||
viewModel.products().observe(viewLifecycleOwner, androidx.lifecycle.Observer { response ->
|
||||
viewModel.products().observe(this, android.arch.lifecycle.Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
|
||||
@ -141,7 +133,7 @@ class HomeFragment : Fragment() {
|
||||
}
|
||||
|
||||
private fun products(filter: ProductFilter) {
|
||||
viewModel.products(filter).observe(viewLifecycleOwner, androidx.lifecycle.Observer { response ->
|
||||
viewModel.products(filter).observe(this, android.arch.lifecycle.Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
}
|
||||
@ -1,24 +1,23 @@
|
||||
package me.gilo.woodroid.app.ui.home
|
||||
package me.gilo.wc.ui.home
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.support.v4.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import com.google.firebase.auth.FirebaseAuth
|
||||
import kotlinx.android.synthetic.main.fragment_profile.*
|
||||
import me.gilo.raison.ui.user.onboarding.SignUpActivity
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.ui.customer.ProfileActivity
|
||||
import me.gilo.woodroid.app.ui.order.MyOrdersActivity
|
||||
import me.gilo.woodroid.app.viewmodels.UserViewModel
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.ui.customer.ProfileActivity
|
||||
import me.gilo.wc.viewmodels.ProductViewModel
|
||||
|
||||
|
||||
class ProfileFragment : Fragment() {
|
||||
|
||||
|
||||
lateinit var viewModel: UserViewModel
|
||||
lateinit var viewModel: ProductViewModel
|
||||
val TAG = "ProfileFragment"
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
@ -38,8 +37,6 @@ class ProfileFragment : Fragment() {
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
viewModel = (activity as HomeActivity).getViewModel(UserViewModel::class.java)
|
||||
|
||||
llMyProfile.setOnClickListener{
|
||||
if (FirebaseAuth.getInstance().currentUser != null) {
|
||||
startActivity(Intent(activity, ProfileActivity::class.java))
|
||||
@ -48,15 +45,6 @@ class ProfileFragment : Fragment() {
|
||||
}
|
||||
}
|
||||
|
||||
llLogout.setOnClickListener{
|
||||
viewModel.logout()
|
||||
startActivity(Intent(activity, SignUpActivity::class.java))
|
||||
}
|
||||
|
||||
llMyOrders.setOnClickListener{
|
||||
startActivity(Intent(activity, MyOrdersActivity::class.java))
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,70 @@
|
||||
package me.gilo.wc.ui.onboarding
|
||||
|
||||
import android.arch.lifecycle.Observer
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.support.design.widget.Snackbar
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import android.widget.Toast
|
||||
import io.github.inflationx.viewpump.ViewPumpContextWrapper
|
||||
import me.gilo.wc.R
|
||||
|
||||
import kotlinx.android.synthetic.main.activity_anonymous_sign_in.*
|
||||
import kotlinx.android.synthetic.main.content_sign_in.*
|
||||
import me.gilo.raison.ui.user.onboarding.SignUpActivity
|
||||
import me.gilo.wc.common.BaseActivity
|
||||
import me.gilo.wc.common.Status
|
||||
import me.gilo.wc.ui.WooDroidActivity
|
||||
import me.gilo.wc.ui.home.HomeActivity
|
||||
import me.gilo.wc.ui.state.ProgressDialogFragment
|
||||
import me.gilo.wc.viewmodels.UserViewModel
|
||||
import java.util.regex.Matcher
|
||||
import java.util.regex.Pattern
|
||||
|
||||
class AnonymousSignInActivity : WooDroidActivity<UserViewModel>() {
|
||||
|
||||
|
||||
override lateinit var viewModel : UserViewModel
|
||||
|
||||
override fun attachBaseContext(newBase: Context) {
|
||||
super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase))
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_anonymous_sign_in)
|
||||
|
||||
viewModel = getViewModel(UserViewModel::class.java)
|
||||
anonymousSignIn()
|
||||
|
||||
}
|
||||
|
||||
private fun anonymousSignIn() {
|
||||
viewModel.anonymousSignIn().observe(this, Observer {
|
||||
response->
|
||||
when (response!!.status()){
|
||||
Status.LOADING ->{
|
||||
showLoading("Setting you up with an account", "This will only take a short while")
|
||||
}
|
||||
|
||||
Status.SUCCESS ->{
|
||||
stopShowingLoading()
|
||||
startActivity(Intent(baseContext, HomeActivity::class.java))
|
||||
|
||||
}
|
||||
|
||||
Status.ERROR ->{
|
||||
stopShowingLoading()
|
||||
Toast.makeText(baseContext, "Something went wrong", Toast.LENGTH_LONG).show()
|
||||
}
|
||||
|
||||
Status.EMPTY ->{
|
||||
stopShowingLoading()
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
@ -1,18 +1,22 @@
|
||||
package me.gilo.raison.ui.user.onboarding
|
||||
|
||||
import androidx.lifecycle.Observer
|
||||
import android.arch.lifecycle.Observer
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.support.v4.content.ContextCompat.startActivity
|
||||
import android.widget.Toast
|
||||
import io.github.inflationx.viewpump.ViewPumpContextWrapper
|
||||
import kotlinx.android.synthetic.main.content_sign_in.*
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.common.Status
|
||||
import me.gilo.woodroid.app.ui.WooDroidActivity
|
||||
import me.gilo.woodroid.app.ui.home.HomeActivity
|
||||
import me.gilo.woodroid.app.ui.state.ProgressDialogFragment
|
||||
import me.gilo.woodroid.app.viewmodels.UserViewModel
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.common.BaseActivity
|
||||
import me.gilo.wc.common.Status
|
||||
import me.gilo.wc.ui.WooDroidActivity
|
||||
import me.gilo.wc.ui.home.HomeActivity
|
||||
import me.gilo.wc.ui.state.ProgressDialogFragment
|
||||
import me.gilo.wc.viewmodels.CustomerViewModel
|
||||
import me.gilo.wc.viewmodels.UserViewModel
|
||||
import org.json.JSONObject
|
||||
import java.util.regex.Matcher
|
||||
import java.util.regex.Pattern
|
||||
|
||||
@ -1,20 +1,22 @@
|
||||
package me.gilo.raison.ui.user.onboarding
|
||||
|
||||
import androidx.lifecycle.Observer
|
||||
import android.arch.lifecycle.Observer
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.support.v4.content.ContextCompat.startActivity
|
||||
import android.widget.Toast
|
||||
import io.github.inflationx.viewpump.ViewPumpContextWrapper
|
||||
import kotlinx.android.synthetic.main.content_sign_up.*
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.common.Status
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.common.BaseActivity
|
||||
import me.gilo.wc.common.Status
|
||||
|
||||
import me.gilo.woodroid.app.models.User
|
||||
import me.gilo.woodroid.app.ui.WooDroidActivity
|
||||
import me.gilo.woodroid.app.ui.home.HomeActivity
|
||||
import me.gilo.woodroid.app.ui.state.ProgressDialogFragment
|
||||
import me.gilo.woodroid.app.viewmodels.UserViewModel
|
||||
import me.gilo.wc.models.User
|
||||
import me.gilo.wc.ui.WooDroidActivity
|
||||
import me.gilo.wc.ui.home.HomeActivity
|
||||
import me.gilo.wc.ui.state.ProgressDialogFragment
|
||||
import me.gilo.wc.viewmodels.UserViewModel
|
||||
import java.util.regex.Matcher
|
||||
import java.util.regex.Pattern
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
package me.gilo.woodroid.app.ui.onboarding
|
||||
package me.gilo.wc.ui.onboarding
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import me.gilo.woodroid.app.R
|
||||
import android.support.design.widget.Snackbar
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import me.gilo.wc.R
|
||||
|
||||
import kotlinx.android.synthetic.main.activity_user_details.*
|
||||
|
||||
19
app/src/main/java/me/gilo/wc/ui/order/MyOrdersActivity.kt
Normal file
19
app/src/main/java/me/gilo/wc/ui/order/MyOrdersActivity.kt
Normal file
@ -0,0 +1,19 @@
|
||||
package me.gilo.wc.ui.order
|
||||
|
||||
import android.os.Bundle
|
||||
import android.support.design.widget.Snackbar
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import me.gilo.wc.R
|
||||
|
||||
import kotlinx.android.synthetic.main.activity_my_orders.*
|
||||
|
||||
class MyOrdersActivity : AppCompatActivity() {
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_my_orders)
|
||||
setSupportActionBar(toolbar)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,28 +1,25 @@
|
||||
package me.gilo.woodroid.app.ui.product
|
||||
package me.gilo.wc.ui.product
|
||||
|
||||
import androidx.lifecycle.Observer
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import android.support.v7.widget.LinearLayoutManager
|
||||
import android.text.SpannableString
|
||||
import android.view.View
|
||||
import android.widget.Toast
|
||||
import com.google.common.primitives.UnsignedBytes.toInt
|
||||
import io.github.inflationx.viewpump.ViewPumpContextWrapper
|
||||
import kotlinx.android.synthetic.main.activity_cart.*
|
||||
import kotlinx.android.synthetic.main.content_cart.*
|
||||
import kotlinx.android.synthetic.main.single_cart_item.*
|
||||
import kotlinx.android.synthetic.main.state_empty.*
|
||||
import me.gilo.raison.ui.user.onboarding.SignUpActivity
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.adapter.CartAdapter
|
||||
import me.gilo.woodroid.app.common.Status
|
||||
import me.gilo.woodroid.app.events.AddQuantityEvent
|
||||
import me.gilo.woodroid.app.events.LessQuantityEvent
|
||||
import me.gilo.woodroid.app.models.CartLineItem
|
||||
import me.gilo.woodroid.app.ui.WooDroidActivity
|
||||
import me.gilo.woodroid.app.viewmodels.CartViewModel
|
||||
import me.gilo.woodroid.models.Customer
|
||||
import me.gilo.woodroid.models.LineItem
|
||||
import me.gilo.woodroid.models.Order
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.adapter.CartAdapter
|
||||
import me.gilo.wc.common.Status
|
||||
import me.gilo.wc.events.AddQuantityEvent
|
||||
import me.gilo.wc.events.LessQuantityEvent
|
||||
import me.gilo.wc.events.ProductEvent
|
||||
import me.gilo.wc.models.CartLineItem
|
||||
import me.gilo.wc.ui.WooDroidActivity
|
||||
import me.gilo.wc.viewmodels.CartViewModel
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
@ -34,7 +31,6 @@ class CartActivity : WooDroidActivity<CartViewModel>() {
|
||||
var cartItems: ArrayList<CartLineItem> = ArrayList()
|
||||
|
||||
lateinit var adapter: CartAdapter
|
||||
lateinit var customer: Customer
|
||||
|
||||
override fun attachBaseContext(newBase: Context) {
|
||||
super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase))
|
||||
@ -49,11 +45,7 @@ class CartActivity : WooDroidActivity<CartViewModel>() {
|
||||
viewModel = getViewModel(CartViewModel::class.java)
|
||||
title = "Cart"
|
||||
|
||||
val layoutManager = LinearLayoutManager(
|
||||
baseContext,
|
||||
LinearLayoutManager.VERTICAL,
|
||||
false
|
||||
)
|
||||
val layoutManager = LinearLayoutManager(baseContext, LinearLayoutManager.VERTICAL, false)
|
||||
rvCart.layoutManager = layoutManager
|
||||
rvCart.isNestedScrollingEnabled = false
|
||||
|
||||
@ -63,17 +55,14 @@ class CartActivity : WooDroidActivity<CartViewModel>() {
|
||||
rvCart.adapter = adapter
|
||||
|
||||
cart()
|
||||
customer()
|
||||
|
||||
llEmptyState_layout.visibility = View.GONE
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
override fun cart() {
|
||||
viewModel.cart().observe(this, androidx.lifecycle.Observer { response ->
|
||||
private fun cart() {
|
||||
viewModel.cart().observe(this, android.arch.lifecycle.Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
showLoading()
|
||||
@ -108,33 +97,6 @@ class CartActivity : WooDroidActivity<CartViewModel>() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
private fun createOrder(order : Order) {
|
||||
viewModel.createOrder(order).observe(this, androidx.lifecycle.Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
showLoading()
|
||||
}
|
||||
|
||||
Status.SUCCESS -> {
|
||||
finish()
|
||||
}
|
||||
|
||||
Status.ERROR -> {
|
||||
stopShowingLoading()
|
||||
|
||||
toast("Something went wrong!")
|
||||
}
|
||||
|
||||
Status.EMPTY -> {
|
||||
stopShowingLoading()
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
private fun setUpPage() {
|
||||
var itemCount = cartItems.size
|
||||
var total = 0
|
||||
@ -158,34 +120,8 @@ class CartActivity : WooDroidActivity<CartViewModel>() {
|
||||
tvTotalItemCountTitle.text = "Items ($itemCount)"
|
||||
}
|
||||
|
||||
tvTotalItemCost.text = "Ksh$total"
|
||||
tvTotal.text = "Ksh$total"
|
||||
|
||||
flSave.setOnClickListener{
|
||||
prepOrder()
|
||||
}
|
||||
}
|
||||
|
||||
private fun prepOrder() {
|
||||
var order = Order()
|
||||
|
||||
var lineitems = ArrayList<LineItem>()
|
||||
|
||||
for (cartitem in cartItems){
|
||||
var lineItem = LineItem()
|
||||
lineItem.price = cartitem.getPrice().toString()
|
||||
lineItem.productId = cartitem.productId
|
||||
lineItem.quantity = cartitem.quantity
|
||||
|
||||
lineitems.add(lineItem)
|
||||
}
|
||||
|
||||
order.lineItems = lineitems
|
||||
order.billingAddress = customer.billingAddress
|
||||
order.shippingAddress = customer.shippingAddress
|
||||
order.customer = customer
|
||||
|
||||
createOrder(order)
|
||||
tvTotalItemCost.text = "$$total"
|
||||
tvTotal.text = "$$total"
|
||||
}
|
||||
|
||||
|
||||
@ -221,7 +157,7 @@ class CartActivity : WooDroidActivity<CartViewModel>() {
|
||||
}
|
||||
|
||||
private fun updateCart(cartLineItem: CartLineItem, quantity: Int) {
|
||||
viewModel.setQuantity(cartLineItem, quantity).observe(this, androidx.lifecycle.Observer { response ->
|
||||
viewModel.setQuantity(cartLineItem, quantity).observe(this, android.arch.lifecycle.Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
|
||||
@ -246,7 +182,7 @@ class CartActivity : WooDroidActivity<CartViewModel>() {
|
||||
|
||||
|
||||
private fun delete(cartLineItem: CartLineItem) {
|
||||
viewModel.deleteItem(cartLineItem).observe(this, androidx.lifecycle.Observer { response ->
|
||||
viewModel.deleteItem(cartLineItem).observe(this, android.arch.lifecycle.Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
|
||||
@ -269,32 +205,5 @@ class CartActivity : WooDroidActivity<CartViewModel>() {
|
||||
|
||||
}
|
||||
|
||||
private fun customer() {
|
||||
viewModel.currentCustomer().observe(this, Observer {
|
||||
response->
|
||||
when (response!!.status()){
|
||||
Status.LOADING ->{
|
||||
|
||||
}
|
||||
|
||||
Status.SUCCESS ->{
|
||||
customer = response.data()[0]
|
||||
|
||||
}
|
||||
|
||||
Status.ERROR ->{
|
||||
Toast.makeText(baseContext, response.error().message.toString(), Toast.LENGTH_LONG).show()
|
||||
}
|
||||
|
||||
Status.EMPTY ->{
|
||||
startActivity(Intent(baseContext, SignUpActivity::class.java))
|
||||
finish()
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -1,8 +1,9 @@
|
||||
package me.gilo.woodroid.app.ui.product
|
||||
package me.gilo.wc.ui.product
|
||||
|
||||
import android.content.Intent
|
||||
import android.content.res.ColorStateList
|
||||
import android.os.Bundle
|
||||
import android.support.v4.content.ContextCompat
|
||||
import android.text.Html
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
@ -10,22 +11,17 @@ import android.view.View
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.lifecycle.Observer
|
||||
import kotlinx.android.synthetic.main.activity_product.*
|
||||
import kotlinx.android.synthetic.main.content_product.*
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.adapter.ImagePagerAdapter
|
||||
import me.gilo.woodroid.app.common.BaseActivity
|
||||
import me.gilo.woodroid.app.common.Status
|
||||
import me.gilo.woodroid.app.events.ProductEvent
|
||||
import me.gilo.woodroid.app.models.CartLineItem
|
||||
import me.gilo.woodroid.app.ui.state.ProgressDialogFragment
|
||||
import me.gilo.woodroid.app.utils.AppUtils
|
||||
import me.gilo.woodroid.app.viewmodels.ProductViewModel
|
||||
import me.gilo.woodroid.core.cart.CartItem
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.adapter.ImagePagerAdapter
|
||||
import me.gilo.wc.common.BaseActivity
|
||||
import me.gilo.wc.common.Status
|
||||
import me.gilo.wc.events.ProductEvent
|
||||
import me.gilo.wc.models.CartLineItem
|
||||
import me.gilo.wc.ui.state.ProgressDialogFragment
|
||||
import me.gilo.wc.viewmodels.ProductViewModel
|
||||
import me.gilo.woodroid.models.Product
|
||||
import me.gilo.woodroid.offlinecart.repo.RoomCartRepository
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
||||
|
||||
@ -55,47 +51,67 @@ class ProductActivity : BaseActivity() {
|
||||
|
||||
if (productId != 0){
|
||||
product(productId)
|
||||
checkIfExistsInCart(productId)
|
||||
|
||||
}
|
||||
|
||||
cart()
|
||||
|
||||
}
|
||||
|
||||
private fun checkIfExistsInCart(productId: Int) {
|
||||
RoomCartRepository(baseContext).exists(productId).observe(this, Observer {productExists ->
|
||||
if (productExists) {
|
||||
fab.backgroundTintList = ColorStateList.valueOf(resources.getColor(R.color.carnation_red))
|
||||
fab.setImageDrawable(ContextCompat.getDrawable(baseContext, R.drawable.baseline_remove_shopping_cart_24))
|
||||
}else{
|
||||
fab.backgroundTintList = ColorStateList.valueOf(resources.getColor(R.color.colorPrimary))
|
||||
fab.setImageDrawable(ContextCompat.getDrawable(baseContext, R.drawable.baseline_add_shopping_cart_24))
|
||||
}
|
||||
|
||||
productInCart = productExists
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
private fun addToCart(product: Product) {
|
||||
RoomCartRepository(baseContext).addToCart(
|
||||
CartItem(
|
||||
productId = product.id,
|
||||
productImage = product.getFeatureImage(),
|
||||
quantity = 1,
|
||||
productPrice = product.price
|
||||
)
|
||||
viewModel.addToCart(product).observe(this, android.arch.lifecycle.Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
Status.SUCCESS -> {
|
||||
|
||||
|
||||
}
|
||||
|
||||
Status.ERROR -> {
|
||||
|
||||
}
|
||||
|
||||
Status.EMPTY -> {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
private fun removeFromCart(cartLineItem: CartLineItem) {
|
||||
|
||||
viewModel.deleteItem(cartLineItem).observe(this, android.arch.lifecycle.Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
|
||||
}
|
||||
|
||||
Status.SUCCESS -> {
|
||||
|
||||
|
||||
}
|
||||
|
||||
Status.ERROR -> {
|
||||
toast("error : " + response.error().message)
|
||||
}
|
||||
|
||||
Status.EMPTY -> {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
private fun product(productId : Int) {
|
||||
viewModel.product(productId).observe(this, androidx.lifecycle.Observer { response ->
|
||||
viewModel.product(productId).observe(this, android.arch.lifecycle.Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
flLoading.visibility = View.VISIBLE
|
||||
@ -126,7 +142,7 @@ class ProductActivity : BaseActivity() {
|
||||
|
||||
|
||||
private fun cart() {
|
||||
viewModel.cart().observe(this, Observer { response ->
|
||||
viewModel.cart().observe(this, android.arch.lifecycle.Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
|
||||
@ -147,6 +163,8 @@ class ProductActivity : BaseActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
toggleFab()
|
||||
|
||||
if (cartItems.size == 0 && tvCartCounter != null){
|
||||
tvCartCounter?.visibility = View.GONE
|
||||
}else{
|
||||
@ -164,6 +182,7 @@ class ProductActivity : BaseActivity() {
|
||||
Status.EMPTY -> {
|
||||
productInCart = false
|
||||
cartItems.clear()
|
||||
toggleFab()
|
||||
|
||||
if (cartItems.size == 0 && tvCartCounter != null){
|
||||
tvCartCounter?.visibility = View.GONE
|
||||
@ -178,6 +197,17 @@ class ProductActivity : BaseActivity() {
|
||||
|
||||
}
|
||||
|
||||
private fun toggleFab() {
|
||||
if (productInCart) {
|
||||
fab.backgroundTintList = ColorStateList.valueOf(resources.getColor(R.color.carnation_red))
|
||||
fab.setImageDrawable(ContextCompat.getDrawable(baseContext, R.drawable.baseline_remove_shopping_cart_24))
|
||||
}else{
|
||||
fab.backgroundTintList = ColorStateList.valueOf(resources.getColor(R.color.colorPrimary))
|
||||
fab.setImageDrawable(ContextCompat.getDrawable(baseContext, R.drawable.baseline_add_shopping_cart_24))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private fun setUpPage(product: Product) {
|
||||
tvTitle.text = product.name
|
||||
tvDescription.text = Html.fromHtml(product.description)
|
||||
@ -231,11 +261,11 @@ class ProductActivity : BaseActivity() {
|
||||
var tvCartCounter : TextView? = null
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||
menuInflater.inflate(R.menu.product, menu)
|
||||
menuInflater.inflate(me.gilo.wc.R.menu.product, menu)
|
||||
|
||||
val item = menu.findItem(R.id.menu_cart)
|
||||
val item = menu.findItem(me.gilo.wc.R.id.menu_cart)
|
||||
val rootView = item.actionView as FrameLayout
|
||||
tvCartCounter = rootView.findViewById<TextView>(R.id.tvCart_counter)
|
||||
tvCartCounter = rootView.findViewById<TextView>(me.gilo.wc.R.id.tvCart_counter)
|
||||
|
||||
rootView.setOnClickListener{startActivity(Intent(baseContext, CartActivity::class.java))}
|
||||
|
||||
@ -1,22 +1,28 @@
|
||||
package me.gilo.woodroid.app.ui.product
|
||||
package me.gilo.wc.ui.product
|
||||
|
||||
import android.app.SearchManager
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import androidx.appcompat.app.ActionBarDrawerToggle
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import android.support.design.widget.Snackbar
|
||||
import android.support.v4.view.GravityCompat
|
||||
import android.support.v7.app.ActionBarDrawerToggle
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.GridLayoutManager
|
||||
import android.support.v7.widget.SearchView
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import android.widget.Toast
|
||||
import io.github.inflationx.viewpump.ViewPumpContextWrapper
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.wc.R
|
||||
|
||||
import kotlinx.android.synthetic.main.activity_product_search.*
|
||||
import kotlinx.android.synthetic.main.content_shop.*
|
||||
import me.gilo.woodroid.app.adapter.ProductAdapter
|
||||
import me.gilo.woodroid.app.common.BaseActivity
|
||||
import me.gilo.woodroid.app.common.Status
|
||||
import me.gilo.woodroid.app.ui.state.ProgressDialogFragment
|
||||
import me.gilo.woodroid.app.viewmodels.ProductViewModel
|
||||
import me.gilo.wc.adapter.ProductAdapter
|
||||
import me.gilo.wc.common.BaseActivity
|
||||
import me.gilo.wc.common.Status
|
||||
import me.gilo.wc.ui.state.ProgressDialogFragment
|
||||
import me.gilo.wc.viewmodels.ProductViewModel
|
||||
import me.gilo.woodroid.models.Product
|
||||
import org.json.JSONObject
|
||||
import java.util.ArrayList
|
||||
@ -46,8 +52,7 @@ class ProductSearchActivity : BaseActivity() {
|
||||
|
||||
title = "Search"
|
||||
|
||||
val layoutManager =
|
||||
GridLayoutManager(baseContext, 2)
|
||||
val layoutManager = GridLayoutManager(baseContext, 2)
|
||||
rvShop.layoutManager = layoutManager
|
||||
rvShop.isNestedScrollingEnabled = false
|
||||
|
||||
@ -73,7 +78,7 @@ class ProductSearchActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
private fun search(query : String) {
|
||||
viewModel.search(query).observe(this, androidx.lifecycle.Observer { response ->
|
||||
viewModel.search(query).observe(this, android.arch.lifecycle.Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
showLoading("Performing search", "This will only take a short while")
|
||||
@ -1,9 +1,10 @@
|
||||
package me.gilo.woodroid.app.ui.product
|
||||
package me.gilo.wc.ui.product
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import androidx.core.view.GravityCompat
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import android.support.v4.view.GravityCompat
|
||||
import android.support.v7.widget.GridLayoutManager
|
||||
import android.support.v7.widget.LinearLayoutManager
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import android.widget.Toast
|
||||
@ -11,13 +12,13 @@ import io.github.inflationx.viewpump.ViewPumpContextWrapper
|
||||
import kotlinx.android.synthetic.main.activity_shop.*
|
||||
import kotlinx.android.synthetic.main.content_shop.*
|
||||
import kotlinx.android.synthetic.main.drawer_filter.*
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.adapter.ProductAdapter
|
||||
import me.gilo.woodroid.app.common.BaseActivity
|
||||
import me.gilo.woodroid.app.common.Status
|
||||
import me.gilo.woodroid.app.ui.state.ProgressDialogFragment
|
||||
import me.gilo.woodroid.app.utils.AppUtils
|
||||
import me.gilo.woodroid.app.viewmodels.ProductViewModel
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.adapter.HomeProductAdapter
|
||||
import me.gilo.wc.adapter.ProductAdapter
|
||||
import me.gilo.wc.common.BaseActivity
|
||||
import me.gilo.wc.common.Status
|
||||
import me.gilo.wc.ui.state.ProgressDialogFragment
|
||||
import me.gilo.wc.viewmodels.ProductViewModel
|
||||
import me.gilo.woodroid.models.Product
|
||||
import me.gilo.woodroid.models.filters.ProductFilter
|
||||
import java.util.*
|
||||
@ -65,8 +66,7 @@ class ShopActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
private fun setUpPage() {
|
||||
val layoutManager =
|
||||
GridLayoutManager(baseContext, 2)
|
||||
val layoutManager = GridLayoutManager(baseContext, 2)
|
||||
rvShop.layoutManager = layoutManager
|
||||
rvShop.isNestedScrollingEnabled = false
|
||||
|
||||
@ -80,7 +80,7 @@ class ShopActivity : BaseActivity() {
|
||||
val filter = ProductFilter()
|
||||
|
||||
if (etSearch.text.toString().isNotEmpty()){
|
||||
filter.setSearch(etSearch.text.toString())
|
||||
filter.search = etSearch.text.toString()
|
||||
}
|
||||
|
||||
if (etMinPrice.text.toString().isNotEmpty()){
|
||||
@ -105,7 +105,7 @@ class ShopActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
private fun products(filter: ProductFilter) {
|
||||
viewModel.products(filter).observe(this, androidx.lifecycle.Observer { response ->
|
||||
viewModel.products(filter).observe(this, android.arch.lifecycle.Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
}
|
||||
@ -136,11 +136,30 @@ class ShopActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
private fun cart() {
|
||||
val cartKey = AppUtils(baseContext).cartSession
|
||||
viewModel.cart(baseContext).observe(this, android.arch.lifecycle.Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
}
|
||||
|
||||
Status.SUCCESS -> {
|
||||
val cartResponse = response.data()
|
||||
}
|
||||
|
||||
Status.ERROR -> {
|
||||
|
||||
|
||||
}
|
||||
|
||||
Status.EMPTY -> {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
private fun search(query : String) {
|
||||
viewModel.search(query).observe(this, androidx.lifecycle.Observer { response ->
|
||||
viewModel.search(query).observe(this, android.arch.lifecycle.Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
}
|
||||
@ -172,7 +191,7 @@ class ShopActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
private fun products() {
|
||||
viewModel.products().observe(this, androidx.lifecycle.Observer { response ->
|
||||
viewModel.products().observe(this, android.arch.lifecycle.Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
package me.gilo.woodroid.app.ui.product.section
|
||||
package me.gilo.wc.ui.product.section
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import android.support.v4.app.DialogFragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import kotlinx.android.synthetic.main.section_add_a_review.*
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.events.ReviewEvent
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.events.ReviewEvent
|
||||
import me.gilo.woodroid.models.ProductReview
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
||||
@ -1,20 +1,21 @@
|
||||
package me.gilo.woodroid.app.ui.product.section
|
||||
package me.gilo.wc.ui.product.section
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import android.support.v4.app.Fragment
|
||||
import android.support.v7.widget.LinearLayoutManager
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import kotlinx.android.synthetic.main.section_product_reviews.*
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.adapter.ProductReviewAdapter
|
||||
import me.gilo.woodroid.app.common.BaseActivity
|
||||
import me.gilo.woodroid.app.common.Status
|
||||
import me.gilo.woodroid.app.events.ReviewEvent
|
||||
import me.gilo.woodroid.app.ui.product.ProductActivity
|
||||
import me.gilo.woodroid.app.viewmodels.ReviewViewModel
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.adapter.ProductReviewAdapter
|
||||
import me.gilo.wc.common.BaseActivity
|
||||
import me.gilo.wc.common.Status
|
||||
import me.gilo.wc.events.ReviewEvent
|
||||
import me.gilo.wc.ui.product.ProductActivity
|
||||
import me.gilo.wc.viewmodels.ProductViewModel
|
||||
import me.gilo.wc.viewmodels.ReviewViewModel
|
||||
import me.gilo.woodroid.models.ProductReview
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
@ -59,11 +60,7 @@ class ProductReviewsFragment : Fragment() {
|
||||
|
||||
private fun reviews(productId : Int) {
|
||||
|
||||
val layoutManager = LinearLayoutManager(
|
||||
activity,
|
||||
LinearLayoutManager.VERTICAL,
|
||||
false
|
||||
)
|
||||
val layoutManager = LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)
|
||||
rvReviews.layoutManager = layoutManager
|
||||
rvReviews.isNestedScrollingEnabled = false
|
||||
|
||||
@ -73,7 +70,7 @@ class ProductReviewsFragment : Fragment() {
|
||||
rvReviews.adapter = productReviewAdapter
|
||||
|
||||
|
||||
viewModel.reviews(productId).observe(this, androidx.lifecycle.Observer { response ->
|
||||
viewModel.reviews(productId).observe(this, android.arch.lifecycle.Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
|
||||
@ -118,8 +115,7 @@ class ProductReviewsFragment : Fragment() {
|
||||
|
||||
private fun addAReviewDialog() {
|
||||
val manager = childFragmentManager
|
||||
addAReviewFragment =
|
||||
AddAReviewDialogFragment.newInstance(productId)
|
||||
addAReviewFragment = AddAReviewDialogFragment.newInstance(productId)
|
||||
addAReviewFragment.isCancelable = true
|
||||
addAReviewFragment.show(manager, "add Review")
|
||||
}
|
||||
@ -140,7 +136,7 @@ class ProductReviewsFragment : Fragment() {
|
||||
}
|
||||
|
||||
private fun save(review: ProductReview) {
|
||||
viewModel.create(review).observe(this, androidx.lifecycle.Observer { response ->
|
||||
viewModel.create(review).observe(this, android.arch.lifecycle.Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
|
||||
@ -1,18 +1,18 @@
|
||||
package me.gilo.woodroid.app.ui.product.section
|
||||
package me.gilo.wc.ui.product.section
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import android.support.v4.app.Fragment
|
||||
import android.support.v7.widget.LinearLayoutManager
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import kotlinx.android.synthetic.main.section_related_products.*
|
||||
import me.gilo.woodroid.app.R
|
||||
import me.gilo.woodroid.app.adapter.HomeProductAdapter
|
||||
import me.gilo.woodroid.app.common.BaseActivity
|
||||
import me.gilo.woodroid.app.common.Status
|
||||
import me.gilo.woodroid.app.events.ProductEvent
|
||||
import me.gilo.woodroid.app.viewmodels.ProductViewModel
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.adapter.HomeProductAdapter
|
||||
import me.gilo.wc.common.BaseActivity
|
||||
import me.gilo.wc.common.Status
|
||||
import me.gilo.wc.events.ProductEvent
|
||||
import me.gilo.wc.viewmodels.ProductViewModel
|
||||
import me.gilo.woodroid.models.Product
|
||||
import me.gilo.woodroid.models.filters.ProductFilter
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
@ -57,11 +57,7 @@ class RelatedProductsFragment : Fragment() {
|
||||
}
|
||||
|
||||
private fun similarProducts(product: Product) {
|
||||
val layoutManager = LinearLayoutManager(
|
||||
activity,
|
||||
LinearLayoutManager.HORIZONTAL,
|
||||
false
|
||||
)
|
||||
val layoutManager = LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, false)
|
||||
rvShop.layoutManager = layoutManager
|
||||
rvShop.isNestedScrollingEnabled = false
|
||||
|
||||
@ -71,9 +67,9 @@ class RelatedProductsFragment : Fragment() {
|
||||
rvShop.adapter = adapter
|
||||
|
||||
val filter = ProductFilter()
|
||||
filter.setInclude(product.related_ids.toIntArray())
|
||||
filter.include = product.related_ids.toIntArray()
|
||||
|
||||
viewModel.products(filter).observe(this, androidx.lifecycle.Observer { response ->
|
||||
viewModel.products(filter).observe(this, android.arch.lifecycle.Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
package me.gilo.woodroid.app.ui.state;
|
||||
package me.gilo.wc.ui.state;
|
||||
|
||||
import android.os.Bundle;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
import me.gilo.woodroid.app.R;
|
||||
import me.gilo.wc.R;
|
||||
|
||||
|
||||
public class ProgressDialogFragment extends DialogFragment {
|
||||
@ -1,10 +1,10 @@
|
||||
package me.gilo.woodroid.app.utils;
|
||||
package me.gilo.wc.utils;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Handler;
|
||||
import androidx.annotation.StringRes;
|
||||
import android.support.annotation.StringRes;
|
||||
import android.util.Base64;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.Toast;
|
||||
@ -63,7 +63,7 @@ public class AppUtils {
|
||||
|
||||
public String getCartSession() {
|
||||
SharedPreferences prefs = context.getSharedPreferences(MY_PREFS_NAME, context.MODE_PRIVATE);
|
||||
return prefs.getString("cartSession", "");
|
||||
return prefs.getString("cartSession", null);
|
||||
}
|
||||
|
||||
public String getExpiry() {
|
||||
@ -1,4 +1,4 @@
|
||||
package me.gilo.woodroid.app.utils;
|
||||
package me.gilo.wc.utils;
|
||||
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
@ -1,4 +1,4 @@
|
||||
package me.gilo.woodroid.app.utils;
|
||||
package me.gilo.wc.utils;
|
||||
|
||||
import org.joda.time.DateMidnight;
|
||||
import org.joda.time.DateTime;
|
||||
@ -1,4 +1,4 @@
|
||||
package me.gilo.woodroid.app.utils;
|
||||
package me.gilo.wc.utils;
|
||||
|
||||
public interface OnItemClickListener<T> {
|
||||
void onItemClick(T data);
|
||||
@ -1,7 +1,7 @@
|
||||
package me.gilo.woodroid.app.utils;
|
||||
package me.gilo.wc.utils;
|
||||
|
||||
import android.content.Context;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.GestureDetector;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
@ -1,4 +1,4 @@
|
||||
package me.gilo.woodroid.app.utils;
|
||||
package me.gilo.wc.utils;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
|
||||
@ -14,11 +14,11 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package me.gilo.woodroid.app.utils;
|
||||
package me.gilo.wc.utils;
|
||||
|
||||
import androidx.lifecycle.ViewModel;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.annotation.NonNull;
|
||||
import android.arch.lifecycle.ViewModel;
|
||||
import android.arch.lifecycle.ViewModelProvider;
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Provider;
|
||||
56
app/src/main/java/me/gilo/wc/viewmodels/CartViewModel.java
Normal file
56
app/src/main/java/me/gilo/wc/viewmodels/CartViewModel.java
Normal file
@ -0,0 +1,56 @@
|
||||
package me.gilo.wc.viewmodels;
|
||||
|
||||
import android.arch.lifecycle.ViewModel;
|
||||
import android.content.Context;
|
||||
import com.google.firebase.firestore.DocumentReference;
|
||||
import me.gilo.wc.common.CompletionGenericLiveData;
|
||||
import me.gilo.wc.common.QueryLiveData;
|
||||
import me.gilo.wc.common.WooLiveData;
|
||||
import me.gilo.wc.models.CartLineItem;
|
||||
import me.gilo.wc.repo.CartRepository;
|
||||
import me.gilo.wc.repo.OrderRepository;
|
||||
import me.gilo.wc.repo.ProductRepository;
|
||||
import me.gilo.woodroid.models.LineItem;
|
||||
import me.gilo.woodroid.models.Product;
|
||||
import me.gilo.woodroid.models.ProductReview;
|
||||
import me.gilo.woodroid.models.filters.ProductFilter;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
public final class CartViewModel extends ViewModel {
|
||||
|
||||
private final CartRepository cartRepository;
|
||||
|
||||
@Inject
|
||||
CartViewModel(CartRepository cartRepository) {
|
||||
this.cartRepository = cartRepository;
|
||||
}
|
||||
|
||||
public CompletionGenericLiveData<DocumentReference> addToCart(Product product) {
|
||||
return cartRepository.addToCart(product);
|
||||
}
|
||||
|
||||
public QueryLiveData<CartLineItem> cart() {
|
||||
return cartRepository.cart();
|
||||
}
|
||||
|
||||
public CompletionGenericLiveData<Void> deleteItem(CartLineItem cartLineItem) {
|
||||
return cartRepository.deleteItem(cartLineItem);
|
||||
}
|
||||
|
||||
public CompletionGenericLiveData<Void> deleteAllCartItems() {
|
||||
return cartRepository.deleteItems();
|
||||
}
|
||||
|
||||
public CompletionGenericLiveData<Void> setQuantity(CartLineItem cartLineItem, int quantity) {
|
||||
return cartRepository.setQuantity(cartLineItem, quantity);
|
||||
}
|
||||
|
||||
public WooLiveData<Map<String, LineItem>> cart(Context context) {
|
||||
return cartRepository.cart(context);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,8 +1,8 @@
|
||||
package me.gilo.woodroid.app.viewmodels;
|
||||
package me.gilo.wc.viewmodels;
|
||||
|
||||
import androidx.lifecycle.ViewModel;
|
||||
import me.gilo.woodroid.app.common.WooLiveData;
|
||||
import me.gilo.woodroid.app.repo.CategoryRepository;
|
||||
import android.arch.lifecycle.ViewModel;
|
||||
import me.gilo.wc.common.WooLiveData;
|
||||
import me.gilo.wc.repo.CategoryRepository;
|
||||
import me.gilo.woodroid.models.Category;
|
||||
import me.gilo.woodroid.models.filters.ProductCategoryFilter;
|
||||
|
||||
@ -1,8 +1,9 @@
|
||||
package me.gilo.woodroid.app.viewmodels;
|
||||
package me.gilo.wc.viewmodels;
|
||||
|
||||
import androidx.lifecycle.ViewModel;
|
||||
import me.gilo.woodroid.app.common.WooLiveData;
|
||||
import me.gilo.woodroid.app.repo.CustomerRepository;
|
||||
import android.arch.lifecycle.ViewModel;
|
||||
import com.google.firebase.auth.FirebaseAuth;
|
||||
import me.gilo.wc.common.WooLiveData;
|
||||
import me.gilo.wc.repo.CustomerRepository;
|
||||
import me.gilo.woodroid.models.Customer;
|
||||
import me.gilo.woodroid.models.filters.CustomerFilter;
|
||||
|
||||
@ -1,16 +1,18 @@
|
||||
package me.gilo.woodroid.app.viewmodels;
|
||||
package me.gilo.wc.viewmodels;
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
import androidx.lifecycle.ViewModel;
|
||||
import me.gilo.woodroid.app.common.CompletionGenericLiveData;
|
||||
import me.gilo.woodroid.app.common.QueryLiveData;
|
||||
import me.gilo.woodroid.app.common.WooLiveData;
|
||||
import me.gilo.woodroid.app.models.CartLineItem;
|
||||
import me.gilo.woodroid.app.repo.CartRepository;
|
||||
import me.gilo.woodroid.app.repo.OrderRepository;
|
||||
import me.gilo.woodroid.app.repo.ProductRepository;
|
||||
|
||||
import me.gilo.woodroid.models.Order;
|
||||
import android.arch.lifecycle.MutableLiveData;
|
||||
import android.arch.lifecycle.ViewModel;
|
||||
import android.content.Context;
|
||||
import com.google.firebase.firestore.DocumentReference;
|
||||
import me.gilo.wc.common.CompletionGenericLiveData;
|
||||
import me.gilo.wc.common.QueryLiveData;
|
||||
import me.gilo.wc.common.WooLiveData;
|
||||
import me.gilo.wc.models.CartLineItem;
|
||||
import me.gilo.wc.repo.CartRepository;
|
||||
import me.gilo.wc.repo.OrderRepository;
|
||||
import me.gilo.wc.repo.ProductRepository;
|
||||
import me.gilo.wc.repo.ReviewRepository;
|
||||
import me.gilo.woodroid.models.LineItem;
|
||||
import me.gilo.woodroid.models.Product;
|
||||
import me.gilo.woodroid.models.ProductReview;
|
||||
import me.gilo.woodroid.models.filters.ProductFilter;
|
||||
@ -48,9 +50,8 @@ public final class ProductViewModel extends ViewModel {
|
||||
return productRepository.products();
|
||||
}
|
||||
|
||||
|
||||
public WooLiveData<Order> addToCart(int productId) {
|
||||
return orderRepository.addToCart(productId);
|
||||
public CompletionGenericLiveData<DocumentReference> addToCart(Product product) {
|
||||
return cartRepository.addToCart(product);
|
||||
}
|
||||
|
||||
public QueryLiveData<CartLineItem> cart() {
|
||||
@ -69,6 +70,10 @@ public final class ProductViewModel extends ViewModel {
|
||||
return cartRepository.setQuantity(cartLineItem, quantity);
|
||||
}
|
||||
|
||||
public WooLiveData<Map<String, LineItem>> cart(Context context) {
|
||||
return cartRepository.cart(context);
|
||||
}
|
||||
|
||||
public WooLiveData<List<Product>> products(ProductFilter filter) {
|
||||
return productRepository.products(filter);
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user