diff --git a/app/build.gradle b/app/build.gradle index 001fc97e345d69a5c7324b9f543e00bbfe9636d5..10b56a36f11cd60a196bd9259f8ea391d31f5f96 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -92,9 +92,10 @@ dependencies { compile "com.android.support:design:$supportLibraryVersion" compile 'com.android.support.constraint:constraint-layout:1.0.2' compile 'com.android.support:multidex:1.0.1' + compile 'com.android.support:recyclerview-v7:25.3.1' - - compile 'com.google.android.gms:play-services-maps:11.0.1' + //google maps + //compile 'com.google.android.gms:play-services-maps:11.0.1' //Logging compile 'com.jakewharton.timber:timber:4.5.1' @@ -131,12 +132,12 @@ dependencies { //MQTT compile 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0' - compile ('org.eclipse.paho:org.eclipse.paho.android.service:1.1.1') { + compile('org.eclipse.paho:org.eclipse.paho.android.service:1.1.1') { exclude module: 'support-v4' } //TELESIGN - compile(name:'appverify', ext:'aar') + compile(name: 'appverify', ext: 'aar') //RXPermissions compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.4@aar' @@ -144,11 +145,17 @@ dependencies { //Barcode scanner compile 'me.dm7.barcodescanner:zbar:1.9.3' + //navigation + compile 'ru.terrakok.cicerone:cicerone:1.0' + + //internet activity + compile 'com.github.pwittchen:reactivenetwork-rx2:0.9.1' + androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) testCompile 'junit:junit:4.12' } - -apply plugin: 'com.google.gms.google-services' \ No newline at end of file +//google maps +//apply plugin: 'com.google.gms.google-services' \ No newline at end of file diff --git a/app/google-services.json b/app/google-services.json deleted file mode 100644 index 408d65ad23a40272247d513154898e2a76a69a1f..0000000000000000000000000000000000000000 --- a/app/google-services.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "project_info": { - "project_number": "812739686465", - "project_id": "test-6d28a" - }, - "client": [ - { - "client_info": { - "mobilesdk_app_id": "1:812739686465:android:f34dd5122c81bed8", - "android_client_info": { - "package_name": "test.bo.kotlin" - } - }, - "oauth_client": [ - { - "client_id": "812739686465-g5khrfjrfqp11pdnon75tk5r5se0te4f.apps.googleusercontent.com", - "client_type": 3 - } - ], - "api_key": [ - { - "current_key": "AIzaSyAb71NYx7QM9bvFBSt--KkjQjayAsDjRu0" - } - ], - "services": { - "analytics_service": { - "status": 1 - }, - "appinvite_service": { - "status": 1, - "other_platform_oauth_client": [] - }, - "ads_service": { - "status": 1 - } - } - }, - { - "client_info": { - "mobilesdk_app_id": "1:812739686465:android:1a9adeff9fbd3f48", - "android_client_info": { - "package_name": "com.nynja.mobile.communicator" - } - }, - "oauth_client": [ - { - "client_id": "812739686465-g5khrfjrfqp11pdnon75tk5r5se0te4f.apps.googleusercontent.com", - "client_type": 3 - } - ], - "api_key": [ - { - "current_key": "AIzaSyAb71NYx7QM9bvFBSt--KkjQjayAsDjRu0" - } - ], - "services": { - "analytics_service": { - "status": 1 - }, - "appinvite_service": { - "status": 1, - "other_platform_oauth_client": [] - }, - "ads_service": { - "status": 1 - } - } - } - ], - "configuration_version": "1" -} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index f94519206c6d2dcdf4996a0537fabd74ddf94cb9..6f6b5ace3db6dab335b4566218cf9fc882e1e64f 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -34,4 +34,10 @@ -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** { **[] $VALUES; public *; -} \ No newline at end of file +} + +#NetworkSatete +-dontwarn com.github.pwittchen.reactivenetwork.library.rx2.ReactiveNetwork +-dontwarn io.reactivex.functions.Function +-dontwarn rx.internal.util.** +-dontwarn sun.misc.Unsafe \ No newline at end of file diff --git a/app/src/androidTest/java/com/ninja/mobile/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/ninja/mobile/ExampleInstrumentedTest.java index 7adea0d2eb7009a512aa9fdfe0b0e7e962552a5f..2a86688d785d88e8c1da33d357057255f1af56de 100644 --- a/app/src/androidTest/java/com/ninja/mobile/ExampleInstrumentedTest.java +++ b/app/src/androidTest/java/com/ninja/mobile/ExampleInstrumentedTest.java @@ -1,4 +1,4 @@ -package com.ninja.mobile; +package com.ninja.mobile.communicator; import android.content.Context; import android.support.test.InstrumentationRegistry; diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a56a55cd00b07c8cbf11fc192cd1ba7234fb67cb..e0995a701d63c0752a108d56c96e8d13c40368f6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + package="com.ninja.mobile.communicator"> @@ -17,12 +17,13 @@ + @@ -48,26 +49,26 @@ - + - + - + cicerone; @Override public void onCreate() { super.onCreate(); @@ -27,6 +31,8 @@ public class NynjaApp extends MultiDexApplication { .applicationModule(new ApplicationModule(this)) .build(); + cicerone = Cicerone.create(); + if (BuildConfig.DEBUG) { Timber.plant(new Timber.DebugTree() { @SuppressLint("StringFormatInTimber") @@ -52,4 +58,14 @@ public class NynjaApp extends MultiDexApplication { public void setComponent(ApplicationComponent applicationComponent) { mApplicationComponent = applicationComponent; } + + public static NavigatorHolder getNavigatorHolder() { + return cicerone.getNavigatorHolder(); + } + + public static Router getRouter() { + return cicerone.getRouter(); + } + + } diff --git a/app/src/main/java/com/ninja/mobile/data/CountryHelper.java b/app/src/main/java/com/ninja/mobile/communicator/data/CountryHelper.java similarity index 96% rename from app/src/main/java/com/ninja/mobile/data/CountryHelper.java rename to app/src/main/java/com/ninja/mobile/communicator/data/CountryHelper.java index 32cf7089bd032aaee780938e6c28289943d79f84..a4902abedaf12b144a927ee7ed335135c7ddd4c4 100644 --- a/app/src/main/java/com/ninja/mobile/data/CountryHelper.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/CountryHelper.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data; +package com.ninja.mobile.communicator.data; import android.content.Context; import android.telephony.TelephonyManager; @@ -36,7 +36,7 @@ public class CountryHelper { phoneFormatMap = new HashMap<>(); } - void parseCountries(Context context) { + void parseCountries(Context context) { HashMap languageMap = new HashMap<>(); try { BufferedReader reader = new BufferedReader(new InputStreamReader(context.getResources().getAssets().open(COUNTRY_FILE))); diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/DataManager.java b/app/src/main/java/com/ninja/mobile/communicator/data/DataManager.java new file mode 100644 index 0000000000000000000000000000000000000000..5585445a35ad9a119508e565f9bca99fa45b1a57 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/data/DataManager.java @@ -0,0 +1,160 @@ +package com.ninja.mobile.communicator.data; + +import android.content.Context; + +import com.github.pwittchen.reactivenetwork.library.rx2.ReactiveNetwork; +import com.ninja.mobile.communicator.data.db.PreferenceHelper; +import com.ninja.mobile.communicator.data.models.events.Data; +import com.ninja.mobile.communicator.data.models.events.ErrorMessage; +import com.ninja.mobile.communicator.data.models.events.EventTopics; +import com.ninja.mobile.communicator.data.models.events.SendMessage; +import com.ninja.mobile.communicator.data.models.events.ServerData; +import com.ninja.mobile.communicator.data.models.mqtt.Auth; +import com.ninja.mobile.communicator.data.models.mqtt.DeleteUser; +import com.ninja.mobile.communicator.data.models.mqtt.Person; +import com.ninja.mobile.communicator.data.models.mqtt.ResendSms; +import com.ninja.mobile.communicator.data.models.mqtt.Token; +import com.ninja.mobile.communicator.data.models.mqtt.TokenResponse; +import com.ninja.mobile.communicator.data.models.mqtt.Verify; +import com.ninja.mobile.communicator.data.models.mqtt.VerifyAccount; +import com.ninja.mobile.communicator.data.server.bert.BertDecoder; +import com.ninja.mobile.communicator.data.server.bert.BertTuple; +import com.ninja.mobile.communicator.injection.ApplicationContext; +import com.ninja.mobile.communicator.intetfaces.APIManager; +import com.ninja.mobile.communicator.utils.ContactsUtil; + +import java.util.List; + +import javax.inject.Inject; +import javax.inject.Singleton; + +import io.reactivex.Observable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; +import timber.log.Timber; + +/** + * Created by Max Chervatiuk on 22.06.17. + * Email: duo.blood@gmail.com + */ + +@Singleton +public class DataManager { + //// TODO: 22.06.17 Implement class + + private final Context mContext; + private APIManager dataBaseManager; + private APIManager apiManager; + + private final RxBus mBus; + private Token mToken; + private String DEFAULT_CLIENT_ID; + + private PreferenceHelper mPreferenceHelper; + public boolean isNetworkAvailable; + + @Inject + public DataManager(@ApplicationContext Context context, RxBus bus, PreferenceHelper preferenceHelper) { + mContext = context; + mBus = bus; + mPreferenceHelper = preferenceHelper; + + //TODO debug empty client id + DEFAULT_CLIENT_ID = "emqttd_" + System.currentTimeMillis(); + //DEFAULT_CLIENT_ID = "emqttd_" + Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID); + + ReactiveNetwork.observeInternetConnectivity() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(aBoolean -> isNetworkAvailable = aBoolean); + } + + public RxBus getBus() { + return mBus; + } + + public CountryHelper getCountryHelper() { + CountryHelper helper = new CountryHelper(); + helper.parseCountries(mContext); + return helper; + } + + public Observable getInputSubject() { + return mBus.getInputSubject() + .doOnNext(this::handleRequest); + } + + private void handleRequest(Data data) { + if (data instanceof ServerData) { + ServerData serverData = (ServerData) data; + tryToSaveToken(serverData); + } else { + + } + } + + public Observable getErrorSubject() { + return mBus.getInputSubject() + .filter(data -> data instanceof ErrorMessage) + .map(data -> (ErrorMessage) data); + } + + + private void tryToSaveToken(ServerData serverData) { + try { + BertDecoder bertDecoder = BertDecoder.setupDecoder().withDecodeAtomAsString(true); + BertTuple bertTuple = (BertTuple) bertDecoder.decodeAny(serverData.getData().getPayload()); + TokenResponse tokenResponse = new TokenResponse().decode(bertTuple); + mPreferenceHelper.saveToken(tokenResponse.mToken); + mToken = tokenResponse.mToken; + } catch (Exception e) { + Timber.e(e); + } + } + + private Token updateToken() { + return mToken == null ? mToken = mPreferenceHelper.getToken() : mToken; + } + + public String getToken() { + return updateToken().data; + } + + //AUTH + public void requestSms(String phone) { + Auth auth = new Auth(); + auth.phone = phone; + mBus.postToServer(new SendMessage(EventTopics.LOGIN, auth)); + } + + public void resendSms() { + Token token = mPreferenceHelper.getToken(); + if (token.isValid()) { + ResendSms resendSms = new ResendSms(token); + mBus.postToServer(new SendMessage(EventTopics.RESEND_MESSAGE, resendSms)); + } + } + + public void confirmSms(String smsCode) { + Token token = mPreferenceHelper.getToken(); + if (token.isValid()) { + Verify verify = new Verify(smsCode); + VerifyAccount verifyAccount = new VerifyAccount(verify, token); + mBus.postToServer(new SendMessage(EventTopics.CONFIRM_ACCOUNT, verifyAccount)); + } + } + + public void deleteUser(String phone) { + DeleteUser deleteUser = new DeleteUser(phone); + mBus.postToServer(new SendMessage(EventTopics.DELETE_USER, deleteUser)); + } + + public String getClientId() { + return DEFAULT_CLIENT_ID; + } + + //Contacts + public List getContactsFromPhone(){ + return ContactsUtil.getContacts(mContext); + } +} diff --git a/app/src/main/java/com/ninja/mobile/data/RxBus.java b/app/src/main/java/com/ninja/mobile/communicator/data/RxBus.java similarity index 75% rename from app/src/main/java/com/ninja/mobile/data/RxBus.java rename to app/src/main/java/com/ninja/mobile/communicator/data/RxBus.java index 34005414c59e70b064a7cb32e7c2ba9ca6144361..71dc6122437a2a9f26def37695def29e5753d6e2 100644 --- a/app/src/main/java/com/ninja/mobile/data/RxBus.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/RxBus.java @@ -1,12 +1,13 @@ -package com.ninja.mobile.data; +package com.ninja.mobile.communicator.data; -import com.ninja.mobile.data.models.events.Data; +import com.ninja.mobile.communicator.data.models.events.Data; import javax.inject.Singleton; import io.reactivex.disposables.Disposable; import io.reactivex.functions.Consumer; import io.reactivex.subjects.PublishSubject; +import timber.log.Timber; /** * Date: 05.07.17 @@ -23,12 +24,12 @@ public class RxBus { private final PublishSubject mOutputSubject = PublishSubject.create(); - public PublishSubject getInputSubject() { + PublishSubject getInputSubject() { return mInputSubject; } public Disposable subscribeToOutput(Consumer consumer) { - return mOutputSubject.subscribe(consumer); + return mOutputSubject.subscribe(consumer, Timber::e); } public void postToServer(Data data) { diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/db/PreferenceHelper.java b/app/src/main/java/com/ninja/mobile/communicator/data/db/PreferenceHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..a6b22ab0d8fd93c47c1d433445a881e0bb9d0890 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/data/db/PreferenceHelper.java @@ -0,0 +1,36 @@ +package com.ninja.mobile.communicator.data.db; + +import android.content.Context; +import android.content.SharedPreferences; + +import com.ninja.mobile.communicator.data.models.mqtt.Token; +import com.ninja.mobile.communicator.injection.ApplicationContext; + +import javax.inject.Inject; +import javax.inject.Singleton; + +/** + * Created by dmitro.boiko on 06/07/2017. + */ + +@Singleton +public class PreferenceHelper { + + private final static String PREF_NAME = "NynjaPrefs"; + private final static String TOKEN_KEY = "token"; + private SharedPreferences mSharedPreferences; + + @Inject + public PreferenceHelper(@ApplicationContext Context context) { + mSharedPreferences = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE); + } + + public void saveToken(Token token) { + mSharedPreferences.edit().putString(TOKEN_KEY, token.data).apply(); + } + + public Token getToken() { + String token = mSharedPreferences.getString(TOKEN_KEY, ""); + return new Token(token); + } +} diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/events/Data.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/events/Data.java new file mode 100644 index 0000000000000000000000000000000000000000..f688eb9338c75f9349a242f29b4cd580b082db61 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/events/Data.java @@ -0,0 +1,14 @@ +package com.ninja.mobile.communicator.data.models.events; + +/** + * Date: 05.07.17 + * Time: 02:58 + * + * @author Max Chervatiuk + * Email: duo.blood@gmail.com + */ + +public abstract class Data { + + public abstract T getData(); +} diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/events/ErrorMessage.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/events/ErrorMessage.java new file mode 100644 index 0000000000000000000000000000000000000000..a1ab1348cd8126dc093f763c2b121e8d69ace5aa --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/events/ErrorMessage.java @@ -0,0 +1,18 @@ +package com.ninja.mobile.communicator.data.models.events; + +/** + * Created by dmitro.boiko on 06/07/2017. + */ + +public class ErrorMessage extends Data { + + ErrorMessageData mErrorMessageData; + + public ErrorMessage(String topic, String errorMessage) { + this.mErrorMessageData = new ErrorMessageData(topic, errorMessage); + } + + @Override public ErrorMessageData getData() { + return mErrorMessageData; + } +} diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/events/ErrorMessageData.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/events/ErrorMessageData.java new file mode 100644 index 0000000000000000000000000000000000000000..8ba35656bc9ebaaa8fe1e6e8011d4ca10a6284a2 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/events/ErrorMessageData.java @@ -0,0 +1,16 @@ +package com.ninja.mobile.communicator.data.models.events; + +/** + * Created by dmitro.boiko on 06/07/2017. + */ + +public class ErrorMessageData { + + public String topic; + public String errorMessage; + + public ErrorMessageData(String topic, String errorMessage) { + this.topic = topic; + this.errorMessage = errorMessage; + } +} diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/events/EventTopics.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/events/EventTopics.java new file mode 100644 index 0000000000000000000000000000000000000000..ec0a9171756b40e801114e7595024b44e45aaef2 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/events/EventTopics.java @@ -0,0 +1,20 @@ +package com.ninja.mobile.communicator.data.models.events; + +/** + * Created by dmitro.boiko on 05/07/2017. + */ + +public enum EventTopics { + + LOGIN, + RESEND_MESSAGE, + CONFIRM_ACCOUNT, + DELETE_USER, + + + + + //Subscribe topics + SUBSCRIBE_FOR_CHAT + +} diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/events/PostData.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/events/PostData.java new file mode 100644 index 0000000000000000000000000000000000000000..ad3e9fd1d5cc3aaa6f1e6144f940c7484987c8ed --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/events/PostData.java @@ -0,0 +1,18 @@ +package com.ninja.mobile.communicator.data.models.events; + +import com.ninja.mobile.communicator.data.models.mqtt.BaseModelMQQT; + +/** + * Created by dmitro.boiko on 05/07/2017. + */ + +public class PostData { + + public EventTopics eventTopic; + public BaseModelMQQT data; + + public PostData(EventTopics eventTopic, BaseModelMQQT data) { + this.eventTopic = eventTopic; + this.data = data; + } +} diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/events/SendMessage.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/events/SendMessage.java new file mode 100644 index 0000000000000000000000000000000000000000..53ed928d880efb4601754b53d1d6b0eae02da9b6 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/events/SendMessage.java @@ -0,0 +1,20 @@ +package com.ninja.mobile.communicator.data.models.events; + +import com.ninja.mobile.communicator.data.models.mqtt.BaseModelMQQT; + +/** + * Created by dmitro.boiko on 05/07/2017. + */ + +public class SendMessage extends Data { + + PostData mPostMessage; + + public SendMessage(EventTopics eventTopics, BaseModelMQQT o) { + mPostMessage = new PostData(eventTopics, o); + } + + @Override public PostData getData() { + return mPostMessage; + } +} diff --git a/app/src/main/java/com/ninja/mobile/data/models/events/ServerData.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/events/ServerData.java similarity index 55% rename from app/src/main/java/com/ninja/mobile/data/models/events/ServerData.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/events/ServerData.java index ad199305263af87d3060dc9eb1998f1e4677e4c1..7f45449caadb42aaad258929f2db2942386e60ff 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/events/ServerData.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/events/ServerData.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.models.events; +package com.ninja.mobile.communicator.data.models.events; import android.support.annotation.NonNull; @@ -12,16 +12,15 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; * Email: duo.blood@gmail.com */ -public class ServerData extends Data { +public class ServerData extends Data { - private Message mData; + private ServerMessage mData; public ServerData(@NonNull String topic, @NonNull MqttMessage message) { - super(Event.MSG); - mData = new Message(topic, message.getPayload()); + mData = new ServerMessage(topic, message.getPayload()); } - @Override public Message getData() { + @Override public ServerMessage getData() { return mData; } } diff --git a/app/src/main/java/com/ninja/mobile/data/models/events/Message.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/events/ServerMessage.java similarity index 71% rename from app/src/main/java/com/ninja/mobile/data/models/events/Message.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/events/ServerMessage.java index 53d6ab6643dbca5052bd10f8f333030763273653..11c33fdb806a734cc514a19a146a5763480bf348 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/events/Message.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/events/ServerMessage.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.models.events; +package com.ninja.mobile.communicator.data.models.events; /** * Date: 05.07.17 @@ -8,12 +8,12 @@ package com.ninja.mobile.data.models.events; * Email: duo.blood@gmail.com */ -public class Message { +public class ServerMessage { private String mTopic; private byte[] mPayload; - public Message(String topic, byte[] payload) { + public ServerMessage(String topic, byte[] payload) { mTopic = topic; mPayload = payload; } diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/events/SubscribeData.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/events/SubscribeData.java new file mode 100644 index 0000000000000000000000000000000000000000..8a44d214b486ef3048647820368f0987bab7a071 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/events/SubscribeData.java @@ -0,0 +1,16 @@ +package com.ninja.mobile.communicator.data.models.events; + +import java.util.HashMap; + +/** + * Created by dmitro.boiko on 05/07/2017. + */ + +public class SubscribeData { + + public HashMap topics; + + public SubscribeData(HashMap topics) { + this.topics = topics; + } +} diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/events/SubscribeMessage.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/events/SubscribeMessage.java new file mode 100644 index 0000000000000000000000000000000000000000..74a5889f0a25d380ddb7a6098005465782de8174 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/events/SubscribeMessage.java @@ -0,0 +1,22 @@ +package com.ninja.mobile.communicator.data.models.events; + +import android.support.annotation.NonNull; + +import java.util.HashMap; + +/** + * Created by dmitro.boiko on 05/07/2017. + */ + +public class SubscribeMessage extends Data { + + SubscribeData mSubscribeData; + + public SubscribeMessage(@NonNull HashMap topics) { + mSubscribeData = new SubscribeData(topics); + } + + @Override public SubscribeData getData() { + return mSubscribeData; + } +} diff --git a/app/src/main/java/com/ninja/mobile/data/models/mqtt/Auth.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Auth.java similarity index 85% rename from app/src/main/java/com/ninja/mobile/data/models/mqtt/Auth.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Auth.java index 3adf44a97dd2b6982afcc91efe76d1c6e8318a7c..e54e061a0601f6a23798472dc23874609e9ed145 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/mqtt/Auth.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Auth.java @@ -1,7 +1,7 @@ -package com.ninja.mobile.data.models.mqtt; +package com.ninja.mobile.communicator.data.models.mqtt; -import com.ninja.mobile.data.server.bert.BertTuple; +import com.ninja.mobile.communicator.data.server.bert.BertTuple; import java.util.List; diff --git a/app/src/main/java/com/ninja/mobile/data/models/mqtt/BaseModelMQQT.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/BaseModelMQQT.java similarity index 63% rename from app/src/main/java/com/ninja/mobile/data/models/mqtt/BaseModelMQQT.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/BaseModelMQQT.java index d531b862aba8c5bfd0bb1d140cf1931014aa558c..33bb2bccf83de110e524d2edb0393fb80ea8b51a 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/mqtt/BaseModelMQQT.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/BaseModelMQQT.java @@ -1,8 +1,8 @@ -package com.ninja.mobile.data.models.mqtt; +package com.ninja.mobile.communicator.data.models.mqtt; -import com.ninja.mobile.data.server.bert.BertAtom; -import com.ninja.mobile.data.server.bert.BertTuple; +import com.ninja.mobile.communicator.data.server.bert.BertAtom; +import com.ninja.mobile.communicator.data.server.bert.BertTuple; /** * Created by dmitro.boiko on 04/07/2017. diff --git a/app/src/main/java/com/ninja/mobile/data/models/mqtt/Contact.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Contact.java similarity index 76% rename from app/src/main/java/com/ninja/mobile/data/models/mqtt/Contact.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Contact.java index 3790518e40445682589518f95d99af8593f2d33f..af0b05dcd4dd00d319e160690c2ca3baa20bd271 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/mqtt/Contact.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Contact.java @@ -1,6 +1,6 @@ -package com.ninja.mobile.data.models.mqtt; +package com.ninja.mobile.communicator.data.models.mqtt; -import com.ninja.mobile.data.server.bert.BertTuple; +import com.ninja.mobile.communicator.data.server.bert.BertTuple; public class Contact extends BaseModelMQQT{ diff --git a/app/src/main/java/com/ninja/mobile/data/models/mqtt/DeleteUser.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/DeleteUser.java similarity index 82% rename from app/src/main/java/com/ninja/mobile/data/models/mqtt/DeleteUser.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/DeleteUser.java index ae75d86ac91984a80f8780024f9eaa3b0645298a..e0397196174f78a215aa82f044b13da7b5c6a9ed 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/mqtt/DeleteUser.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/DeleteUser.java @@ -1,7 +1,7 @@ -package com.ninja.mobile.data.models.mqtt; +package com.ninja.mobile.communicator.data.models.mqtt; -import com.ninja.mobile.data.server.bert.BertTuple; +import com.ninja.mobile.communicator.data.server.bert.BertTuple; import java.util.List; diff --git a/app/src/main/java/com/ninja/mobile/data/models/mqtt/InitModel.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/InitModel.java similarity index 53% rename from app/src/main/java/com/ninja/mobile/data/models/mqtt/InitModel.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/InitModel.java index 2f1e1e9de224229e3b6eba5fc589c2f2fecc95f4..91375a16f3414f3de157250639024043685efa24 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/mqtt/InitModel.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/InitModel.java @@ -1,14 +1,14 @@ -package com.ninja.mobile.data.models.mqtt; +package com.ninja.mobile.communicator.data.models.mqtt; -import com.ninja.mobile.data.server.bert.BertTuple; +import com.ninja.mobile.communicator.data.server.bert.BertTuple; public class InitModel extends BaseModelMQQT{ - public int vnode_max; + public byte vnode_max; @Override public InitModel decode(BertTuple bertTuple) { - vnode_max = (int) bertTuple.get(1); + vnode_max = (byte) bertTuple.get(1); return this; } diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Io.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Io.java new file mode 100644 index 0000000000000000000000000000000000000000..7fe20286802c589f4da0045deb2ab3e532ca5422 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Io.java @@ -0,0 +1,57 @@ +package com.ninja.mobile.communicator.data.models.mqtt; + + +import com.ninja.mobile.communicator.data.server.bert.BertTuple; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by dmitro.boiko on 04/07/2017. + */ + +public class Io extends BaseModelMQQT { + + public Object code; + public Object data; + + public Io() { + } + + @Override public Io decode(BertTuple bertTuple) { + this.code = bertTuple.get(0); + this.data = bertTuple.get(1); + return this; + } + + @Override public List encode() { + return new ArrayList() { + { + add(name); + add(code); + add(data); + } + }; + } + + public boolean isSuccess() { + try { + String isOk = code.toString(); + return "ok".equalsIgnoreCase(isOk); + } catch (Exception e) { + e.printStackTrace(); + } + return false; + } + + public String getStatus() { + try { + return data.toString(); + } catch (Exception e) { + e.printStackTrace(); + } + return ""; + } + + +} diff --git a/app/src/main/java/com/ninja/mobile/data/models/mqtt/Ok.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Ok.java similarity index 67% rename from app/src/main/java/com/ninja/mobile/data/models/mqtt/Ok.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Ok.java index 9eddae386def82e589f8a3511b18a5194bcc5c3d..6675bfc6bc3b1aaa2a79a1917849652469a76ad8 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/mqtt/Ok.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Ok.java @@ -1,6 +1,6 @@ -package com.ninja.mobile.data.models.mqtt; +package com.ninja.mobile.communicator.data.models.mqtt; -import com.ninja.mobile.data.server.bert.BertTuple; +import com.ninja.mobile.communicator.data.server.bert.BertTuple; public class Ok extends BaseModelMQQT{ diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Person.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Person.java new file mode 100644 index 0000000000000000000000000000000000000000..adb95b19a8447fcc2efc3556e25da3451edf5a52 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Person.java @@ -0,0 +1,56 @@ +package com.ninja.mobile.communicator.data.models.mqtt; + +import com.ninja.mobile.communicator.data.server.bert.BertTuple; + +import java.util.ArrayList; +import java.util.List; + +public class Person extends BaseModelMQQT { + + public long id; + public String name; + public String surname; + public String username; + public List phonelist; + public String alias; + public boolean isNinja; + public String phone; + public String photoUrl; + + public Person() { + } + + @Override public Person decode(BertTuple bertTuple) { + return null; + } + + @Override public Object encode() { + return null; + } + + + public static List getMockData() { + List contacts = new ArrayList<>(); + + for (int i = 0; i < 30; i++) { + Person person = new Person(); + person.name = "name " + i; + person.phone = "1234 ..... " + i; + person.username = "username " + i; + person.isNinja = (i % 2 == 0); + person.photoUrl = "https://cdn0.iconfinder.com/data/icons/PRACTIKA/256/user.png"; + contacts.add(person); + } + + Person person = new Person(); + person.name = "O name "; + person.phone = "1234 ..... " ; + person.username = "username "; + person.isNinja = true; + person.photoUrl = "https://cdn0.iconfinder.com/data/icons/PRACTIKA/256/user.png"; + contacts.add(person); + + + return contacts; + } +} diff --git a/app/src/main/java/com/ninja/mobile/data/models/mqtt/Profile.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Profile.java similarity index 75% rename from app/src/main/java/com/ninja/mobile/data/models/mqtt/Profile.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Profile.java index ac2970d5f3319269b7916cf6109bb295228fc38d..f80c5f6251e4bf334ffe0c5270b3ddbd714291bc 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/mqtt/Profile.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Profile.java @@ -1,6 +1,6 @@ -package com.ninja.mobile.data.models.mqtt; +package com.ninja.mobile.communicator.data.models.mqtt; -import com.ninja.mobile.data.server.bert.BertTuple; +import com.ninja.mobile.communicator.data.server.bert.BertTuple; import java.util.List; diff --git a/app/src/main/java/com/ninja/mobile/data/models/mqtt/ResendSms.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/ResendSms.java similarity index 84% rename from app/src/main/java/com/ninja/mobile/data/models/mqtt/ResendSms.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/ResendSms.java index 4590c4d7ae9d044ac192dfd44c8a719adb5decb4..afca70f1316a85afe920f06dfb7245b6fb7773ec 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/mqtt/ResendSms.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/ResendSms.java @@ -1,7 +1,7 @@ -package com.ninja.mobile.data.models.mqtt; +package com.ninja.mobile.communicator.data.models.mqtt; -import com.ninja.mobile.data.server.bert.BertTuple; +import com.ninja.mobile.communicator.data.server.bert.BertTuple; import java.util.List; diff --git a/app/src/main/java/com/ninja/mobile/data/models/mqtt/Room.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Room.java similarity index 73% rename from app/src/main/java/com/ninja/mobile/data/models/mqtt/Room.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Room.java index ecdaedf4eedbd342d5e07b1e523033d0a46303f0..7b574e55a8186e94ddcadb129353b760880b88ef 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/mqtt/Room.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Room.java @@ -1,6 +1,6 @@ -package com.ninja.mobile.data.models.mqtt; +package com.ninja.mobile.communicator.data.models.mqtt; -import com.ninja.mobile.data.server.bert.BertTuple; +import com.ninja.mobile.communicator.data.server.bert.BertTuple; import java.util.List; diff --git a/app/src/main/java/com/ninja/mobile/data/models/mqtt/Roster.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Roster.java similarity index 79% rename from app/src/main/java/com/ninja/mobile/data/models/mqtt/Roster.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Roster.java index 493c5f135eee3970ffc641b9b96a339ab208ac49..ada00b389056537d96fe2acab4e63d9d4dbeb6c9 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/mqtt/Roster.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Roster.java @@ -1,6 +1,6 @@ -package com.ninja.mobile.data.models.mqtt; +package com.ninja.mobile.communicator.data.models.mqtt; -import com.ninja.mobile.data.server.bert.BertTuple; +import com.ninja.mobile.communicator.data.server.bert.BertTuple; import java.util.List; diff --git a/app/src/main/java/com/ninja/mobile/data/models/mqtt/Token.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Token.java similarity index 62% rename from app/src/main/java/com/ninja/mobile/data/models/mqtt/Token.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Token.java index b54bd92050df57706ab05c28d376530567b439a3..4f4c2de3d1c8e5f5c558893e328525f82bd13aab 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/mqtt/Token.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Token.java @@ -1,7 +1,9 @@ -package com.ninja.mobile.data.models.mqtt; +package com.ninja.mobile.communicator.data.models.mqtt; -import com.ninja.mobile.data.server.bert.BertTuple; +import android.text.TextUtils; + +import com.ninja.mobile.communicator.data.server.bert.BertTuple; import java.util.List; @@ -16,11 +18,15 @@ public class Token extends BaseModelMQQT { public Token() { } + public Token(String token) { + data = token; + } + @Override public Token decode(BertTuple mqttMessage) { Object o = mqttMessage.get(1); if (o instanceof byte[]) { data = new String((byte[]) o); - }else if (o instanceof String){ + } else if (o instanceof String) { data = (String) o; } return this; @@ -32,4 +38,8 @@ public class Token extends BaseModelMQQT { add(data); }}; } + + public boolean isValid() { + return !TextUtils.isEmpty(data); + } } \ No newline at end of file diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/TokenResponse.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/TokenResponse.java new file mode 100644 index 0000000000000000000000000000000000000000..dd6e329bde20625867c4ef449aa0c825cbefb5ac --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/TokenResponse.java @@ -0,0 +1,24 @@ +package com.ninja.mobile.communicator.data.models.mqtt; + +import com.ninja.mobile.communicator.data.server.bert.BertTuple; + +/** + * Created by dmitro.boiko on 06/07/2017. + */ + +public class TokenResponse extends BaseModelMQQT { + + public Io mIo; + public Token mToken; + + @Override public TokenResponse decode(BertTuple bertTuple) { + + mIo = new Io().decode((BertTuple) bertTuple.get(1)); + mToken = new Token().decode((BertTuple) bertTuple.get(2)); + return this; + } + + @Override public Object encode() { + return null; + } +} diff --git a/app/src/main/java/com/ninja/mobile/data/models/mqtt/Verify.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Verify.java similarity index 83% rename from app/src/main/java/com/ninja/mobile/data/models/mqtt/Verify.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Verify.java index cfd2a526ef80c7e91b0ed5f356af1f10e86ed0fb..d074676b1182bc092b9ae9755792d5e469e315fe 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/mqtt/Verify.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Verify.java @@ -1,7 +1,7 @@ -package com.ninja.mobile.data.models.mqtt; +package com.ninja.mobile.communicator.data.models.mqtt; -import com.ninja.mobile.data.server.bert.BertTuple; +import com.ninja.mobile.communicator.data.server.bert.BertTuple; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/ninja/mobile/data/models/mqtt/VerifyAccount.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/VerifyAccount.java similarity index 87% rename from app/src/main/java/com/ninja/mobile/data/models/mqtt/VerifyAccount.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/VerifyAccount.java index bd4592a82d96445b8fba22ad46f6773b03d33288..fa88aaf8ad414e59c79adb4d636ad5655ce4eb8a 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/mqtt/VerifyAccount.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/VerifyAccount.java @@ -1,7 +1,7 @@ -package com.ninja.mobile.data.models.mqtt; +package com.ninja.mobile.communicator.data.models.mqtt; -import com.ninja.mobile.data.server.bert.BertTuple; +import com.ninja.mobile.communicator.data.server.bert.BertTuple; import java.util.List; diff --git a/app/src/main/java/com/ninja/mobile/data/models/right_models/Approve.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Approve.java similarity index 70% rename from app/src/main/java/com/ninja/mobile/data/models/right_models/Approve.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Approve.java index fb1d8e56768e3bfc109a73ceb400c7e4b8d020f8..8e9271f0aa4f0cddbc9c6d62963dd5733def06c2 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/right_models/Approve.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Approve.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.models.right_models; +package com.ninja.mobile.communicator.data.models.right_models; public class Approve { diff --git a/app/src/main/java/com/ninja/mobile/data/models/right_models/Confirm.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Confirm.java similarity index 71% rename from app/src/main/java/com/ninja/mobile/data/models/right_models/Confirm.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Confirm.java index 92d0b0016ba987d311cdb42b0a31e06f9746c36c..6aacfb9d974c820fc6cb3c031698fe5eac04aea6 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/right_models/Confirm.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Confirm.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.models.right_models; +package com.ninja.mobile.communicator.data.models.right_models; public class Confirm { diff --git a/app/src/main/java/com/ninja/mobile/data/models/right_models/Error.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Error.java similarity index 54% rename from app/src/main/java/com/ninja/mobile/data/models/right_models/Error.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Error.java index 6c5044484b60f0f40e681e629458263d80711455..9a78b995d527b1cf3d5c64572919cf7e236b16b6 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/right_models/Error.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Error.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.models.right_models; +package com.ninja.mobile.communicator.data.models.right_models; public class Error { diff --git a/app/src/main/java/com/ninja/mobile/data/models/right_models/Friend.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Friend.java similarity index 71% rename from app/src/main/java/com/ninja/mobile/data/models/right_models/Friend.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Friend.java index 4797da21a59fff0ab94ad6e2192870fac34324f6..e71144302d4ec78873e9b91ba6d7063e31f27cfc 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/right_models/Friend.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Friend.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.models.right_models; +package com.ninja.mobile.communicator.data.models.right_models; public class Friend { diff --git a/app/src/main/java/com/ninja/mobile/data/models/right_models/History.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/History.java similarity index 75% rename from app/src/main/java/com/ninja/mobile/data/models/right_models/History.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/History.java index 8703c23980e8bcdb88cd90a4c43443efed6c5df7..2803e11d5596c5a0014db2fee6b2ca3ad66fd8cb 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/right_models/History.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/History.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.models.right_models; +package com.ninja.mobile.communicator.data.models.right_models; import java.util.List; diff --git a/app/src/main/java/com/ninja/mobile/data/models/right_models/Iterator.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Iterator.java similarity index 78% rename from app/src/main/java/com/ninja/mobile/data/models/right_models/Iterator.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Iterator.java index d8c50e57b17ac38c7df3cb6f4f12e2c671389209..6110e63f0339234573226d348943c0bc2e9f6c2e 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/right_models/Iterator.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Iterator.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.models.right_models; +package com.ninja.mobile.communicator.data.models.right_models; import java.util.List; diff --git a/app/src/main/java/com/ninja/mobile/data/models/right_models/Join.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Join.java similarity index 69% rename from app/src/main/java/com/ninja/mobile/data/models/right_models/Join.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Join.java index 3a00439f15ff6561dee6f118c25131e4385527c4..1e5752b9d84c8d159ccb685b93cf327852cd2090 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/right_models/Join.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Join.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.models.right_models; +package com.ninja.mobile.communicator.data.models.right_models; public class Join { diff --git a/app/src/main/java/com/ninja/mobile/data/models/right_models/Leave.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Leave.java similarity index 69% rename from app/src/main/java/com/ninja/mobile/data/models/right_models/Leave.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Leave.java index f04e46b2eaa8acaa1b43ecda712c1c886d23540f..97ebf5a97d44e0db65ce7ced71430108fdfeb54e 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/right_models/Leave.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Leave.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.models.right_models; +package com.ninja.mobile.communicator.data.models.right_models; public class Leave { diff --git a/app/src/main/java/com/ninja/mobile/data/models/right_models/Message.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Message.java similarity index 85% rename from app/src/main/java/com/ninja/mobile/data/models/right_models/Message.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Message.java index f547b11214621847c3ef891b63ad7686d96506c4..4d2a60157a8f7a1a8ca8a4efa0580b976ff66817 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/right_models/Message.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Message.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.models.right_models; +package com.ninja.mobile.communicator.data.models.right_models; import java.util.List; diff --git a/app/src/main/java/com/ninja/mobile/data/models/right_models/Revoke.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Revoke.java similarity index 66% rename from app/src/main/java/com/ninja/mobile/data/models/right_models/Revoke.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Revoke.java index 2d2a22f36f37be619d31409c1d9a13f8110ef691..b96ac749cb2d157864d4129de922986a304b1b1b 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/right_models/Revoke.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Revoke.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.models.right_models; +package com.ninja.mobile.communicator.data.models.right_models; public class Revoke { diff --git a/app/src/main/java/com/ninja/mobile/data/models/right_models/Token.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Token.java similarity index 54% rename from app/src/main/java/com/ninja/mobile/data/models/right_models/Token.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Token.java index 56f33bd12df29fa689490647b22e670b68af4c17..8156ea0f60bdd8de3a147d0d0ab20353be57dd30 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/right_models/Token.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Token.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.models.right_models; +package com.ninja.mobile.communicator.data.models.right_models; public class Token { diff --git a/app/src/main/java/com/ninja/mobile/data/models/right_models/Typing.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Typing.java similarity index 62% rename from app/src/main/java/com/ninja/mobile/data/models/right_models/Typing.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Typing.java index 9dddcb0cf402bacf1b2140cf828a60dbcb56189c..8937866bc461134b3b9865e765f28fcfabc2197c 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/right_models/Typing.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/right_models/Typing.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.models.right_models; +package com.ninja.mobile.communicator.data.models.right_models; public class Typing { diff --git a/app/src/main/java/com/ninja/mobile/data/models/temp_models/Account.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/temp_models/Account.java similarity index 96% rename from app/src/main/java/com/ninja/mobile/data/models/temp_models/Account.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/temp_models/Account.java index 3129f3ef05f662c133636d93a037922ff916a755..36d4951bb3164eb4b37d11fa218619e812c55bcc 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/temp_models/Account.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/temp_models/Account.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.models.temp_models; +package com.ninja.mobile.communicator.data.models.temp_models; import android.os.Parcel; import android.os.Parcelable; diff --git a/app/src/main/java/com/ninja/mobile/data/models/temp_models/Country.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/temp_models/Country.java similarity index 97% rename from app/src/main/java/com/ninja/mobile/data/models/temp_models/Country.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/temp_models/Country.java index 20791382f5024c76bf22753736bc9c03d8985a29..0190d8d4efdf91ae2cf159b80c0839c72d417a5c 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/temp_models/Country.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/temp_models/Country.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.models.temp_models; +package com.ninja.mobile.communicator.data.models.temp_models; import com.google.gson.annotations.SerializedName; diff --git a/app/src/main/java/com/ninja/mobile/data/models/temp_models/Person.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/temp_models/Person.java similarity index 96% rename from app/src/main/java/com/ninja/mobile/data/models/temp_models/Person.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/temp_models/Person.java index f4584d9ad2a7c811f16a7588f7af1d6d178e52f2..84f405e24b35df5e2aa7c396adce52cbca05d7d6 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/temp_models/Person.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/temp_models/Person.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.models.temp_models; +package com.ninja.mobile.communicator.data.models.temp_models; /* * Created by Bo on 29.06.2017. diff --git a/app/src/main/java/com/ninja/mobile/data/models/temp_models/Phone.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/temp_models/Phone.java similarity index 93% rename from app/src/main/java/com/ninja/mobile/data/models/temp_models/Phone.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/temp_models/Phone.java index 4a7184385c9f3b1e6df0146d9b0b94286c1caa97..674f4838923f55cfdc7f60e12b49d7e88f8183f3 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/temp_models/Phone.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/temp_models/Phone.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.models.temp_models; +package com.ninja.mobile.communicator.data.models.temp_models; /* * Created by Bo on 29.06.2017. diff --git a/app/src/main/java/com/ninja/mobile/data/models/temp_models/Room.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/temp_models/Room.java similarity index 95% rename from app/src/main/java/com/ninja/mobile/data/models/temp_models/Room.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/temp_models/Room.java index 9a6213ab0571ea40e269c76483ce124a9ed3438d..219d15cdcf800873eee4cb01d09e0de7c619815a 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/temp_models/Room.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/temp_models/Room.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.models.temp_models; +package com.ninja.mobile.communicator.data.models.temp_models; import android.os.Parcel; import android.os.Parcelable; diff --git a/app/src/main/java/com/ninja/mobile/data/models/temp_models/Roster.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/temp_models/Roster.java similarity index 96% rename from app/src/main/java/com/ninja/mobile/data/models/temp_models/Roster.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/temp_models/Roster.java index ad7ed4e7ad0a4ae5bc7b278b6eb3a9f16dfdf7b9..70e16a6d0ffbf2b94287b5b7195dfb8622a693da 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/temp_models/Roster.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/temp_models/Roster.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.models.temp_models; +package com.ninja.mobile.communicator.data.models.temp_models; import android.os.Parcel; import android.os.Parcelable; diff --git a/app/src/main/java/com/ninja/mobile/data/models/temp_models/User.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/temp_models/User.java similarity index 96% rename from app/src/main/java/com/ninja/mobile/data/models/temp_models/User.java rename to app/src/main/java/com/ninja/mobile/communicator/data/models/temp_models/User.java index 07ff47931c099bc156f1ab029bb4bea669920445..892e8a4355cc454bce22e3cc34cad3867616e9c4 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/temp_models/User.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/temp_models/User.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.models.temp_models; +package com.ninja.mobile.communicator.data.models.temp_models; import android.os.Parcel; import android.os.Parcelable; diff --git a/app/src/main/java/com/ninja/mobile/data/server/PahoService.java b/app/src/main/java/com/ninja/mobile/communicator/data/server/PahoService.java similarity index 51% rename from app/src/main/java/com/ninja/mobile/data/server/PahoService.java rename to app/src/main/java/com/ninja/mobile/communicator/data/server/PahoService.java index cb4345a4e013df7077f1cb356e48ebcb05a5a855..bba9d1909a55edd3c250931c2b5af7b412ccc580 100644 --- a/app/src/main/java/com/ninja/mobile/data/server/PahoService.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/server/PahoService.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.server; +package com.ninja.mobile.communicator.data.server; import android.app.Service; import android.content.Context; @@ -7,17 +7,26 @@ import android.os.IBinder; import android.support.annotation.Nullable; import android.util.Log; -import com.ninja.mobile.data.server.bert.BertDecoder; -import com.ninja.mobile.data.server.bert.BertEncoder; -import com.ninja.mobile.data.server.bert.BertTuple; -import com.ninja.mobile.data.models.mqtt.InitModel; -import com.ninja.mobile.data.models.mqtt.Auth; -import com.ninja.mobile.data.models.mqtt.DeleteUser; -import com.ninja.mobile.data.models.mqtt.Io; -import com.ninja.mobile.data.models.mqtt.ResendSms; -import com.ninja.mobile.data.models.mqtt.Token; -import com.ninja.mobile.data.models.mqtt.Verify; -import com.ninja.mobile.data.models.mqtt.VerifyAccount; +import com.ninja.mobile.communicator.NynjaApp; +import com.ninja.mobile.communicator.R; +import com.ninja.mobile.communicator.data.DataManager; +import com.ninja.mobile.communicator.data.RxBus; +import com.ninja.mobile.communicator.data.models.events.ErrorMessage; +import com.ninja.mobile.communicator.data.models.events.PostData; +import com.ninja.mobile.communicator.data.models.events.SendMessage; +import com.ninja.mobile.communicator.data.models.events.ServerData; +import com.ninja.mobile.communicator.data.models.events.SubscribeData; +import com.ninja.mobile.communicator.data.models.events.SubscribeMessage; +import com.ninja.mobile.communicator.data.models.mqtt.Auth; +import com.ninja.mobile.communicator.data.models.mqtt.DeleteUser; +import com.ninja.mobile.communicator.data.models.mqtt.InitModel; +import com.ninja.mobile.communicator.data.models.mqtt.ResendSms; +import com.ninja.mobile.communicator.data.models.mqtt.Token; +import com.ninja.mobile.communicator.data.models.mqtt.Verify; +import com.ninja.mobile.communicator.data.models.mqtt.VerifyAccount; +import com.ninja.mobile.communicator.data.server.bert.BertDecoder; +import com.ninja.mobile.communicator.data.server.bert.BertEncoder; +import com.ninja.mobile.communicator.data.server.bert.BertTuple; import org.eclipse.paho.android.service.MqttAndroidClient; import org.eclipse.paho.client.mqttv3.IMqttActionListener; @@ -29,22 +38,33 @@ import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttMessage; import java.io.InvalidObjectException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.inject.Inject; + +import io.reactivex.disposables.Disposable; import timber.log.Timber; public class PahoService extends Service { private static final String TAG = "PahoService "; private static final String SERVER_URL = "tcp://ns.synrc.com:1883"; //1883 default port for mqtt - private static String DEFAULT_CLIENT_ID; private static final String USERNAME_TO_API = "api"; - // private final String phone = "+380505172490"; //max - private final String phone = "380632889890"; //my private MqttAndroidClient serverClient; private BertEncoder mEncoder; - private int maxNode = 4;//-1; - private Token token; + private int maxNode = -1; + + @Inject DataManager mDataManager; + + private RxBus mBus; + private Disposable mDisposable; + private HashMap defaultTopics = new HashMap() {{ + put(Actions.ACTION_AUTH, 2); + }}; public static Intent newInstance(Context context) { return new Intent(context, PahoService.class); @@ -52,37 +72,52 @@ public class PahoService extends Service { @Override public void onCreate() { + NynjaApp.getComponent().inject(this); super.onCreate(); } @Override public void onDestroy() { + if (mDisposable != null) mDisposable.dispose(); super.onDestroy(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { - init(); + mBus = mDataManager.getBus(); + listenOutputMessage(); connectToServer(); return START_STICKY; } - private void init() { - //TODO debug empty client id - DEFAULT_CLIENT_ID = "emqttd_" + System.currentTimeMillis(); - //DEFAULT_CLIENT_ID = "emqttd_" + Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID); + @Nullable @Override public IBinder onBind(Intent intent) { + return null; } - @Nullable - @Override - public IBinder onBind(Intent intent) { - //TODO create connection to activity - return null; + private void listenOutputMessage() { + mDisposable = mBus.subscribeToOutput(data -> { + //// FIXME: 05/07/2017 add subscribe + if (mDataManager.isNetworkAvailable) { + if (data instanceof SendMessage) { + SendMessage sendMessage = (SendMessage) data; + PostData postData = sendMessage.getData(); + PahoService.this.publishMessage(sendMessage.getData().eventTopic.ordinal()+1, getAuthTopic(), postData.data.encode()); + } else if (data instanceof SubscribeMessage) { + SubscribeMessage subscribeMessage = (SubscribeMessage) data; + SubscribeData subscribeData = subscribeMessage.getData(); + subscribeForTopics(subscribeData.topics); + } + } else { + mBus.postEvent(new ErrorMessage(getAuthTopic(), getString(R.string.error_no_internet_connection))); + } + }); } + private String getAuthTopic() {return Topics.getAuthTopic(maxNode, mDataManager.getClientId(), mDataManager.getToken());} + private void connectToServer() { try { - serverClient = new MqttAndroidClient(getApplicationContext(), SERVER_URL, DEFAULT_CLIENT_ID); + serverClient = new MqttAndroidClient(getApplicationContext(), SERVER_URL, mDataManager.getClientId()); serverClient.setCallback(new MqttCallback() { @Override @@ -92,8 +127,9 @@ public class PahoService extends Service { @Override public void messageArrived(String topic, MqttMessage message) throws Exception { - Timber.d(TAG + " message from server: Topics:" + topic + ", Message:" + message.toString()); - handleMessages(topic, message); + Timber.d(TAG + " message from server: Topics:" + topic + ", ServerMessage:" + message.toString()); + initNode(message); + mBus.postEvent(new ServerData(topic, message)); } @Override @@ -110,38 +146,20 @@ public class PahoService extends Service { @Override public void onSuccess(IMqttToken asyncActionToken) { Timber.d(TAG + "connect success"); - subscribeForTopics(); + subscribeForTopics(defaultTopics); } @Override public void onFailure(IMqttToken asyncActionToken, Throwable exception) { Timber.e(exception); - Timber.d(TAG + exception.toString()); } }); } catch (MqttException e) { - e.printStackTrace(); + Timber.e(e); } } - private void handleMessages(String topic, MqttMessage message) { - if (!isNodeSetup()) { - initNode(message); - } else { - switch (topic) { - - case Actions.ACTION_AUTH: - handleAuth(message); - break; - } - } - } - - private boolean isNodeSetup() { - return maxNode != -1; - } - private void initNode(MqttMessage message) { if (maxNode == -1) { BertDecoder bertDecoder = BertDecoder.setupDecoder().withDecodeAtomAsString(true); @@ -150,76 +168,43 @@ public class PahoService extends Service { InitModel initModel = new InitModel().decode(bertTuple); maxNode = initModel.vnode_max; } catch (InvalidObjectException e) { - e.printStackTrace(); + Timber.e(e); } } } - private void handleAuth(MqttMessage message) { + private void subscribeForTopics(HashMap topics) { try { - BertTuple o = (BertTuple) BertDecoder.setupDecoder().withDecodeAtomAsString(true).decodeAny(message.getPayload()); - String actionName = (String) o.get(0); - switch (actionName) { - case "io": - Io io = new Io().decode((BertTuple) o.get(1)); - if (io.data.toString().equalsIgnoreCase("not_verified")) { - Token tokenObj = new Token().decode((BertTuple) o.get(2)); - token = tokenObj; - resendSms(tokenObj); - } - break; - } - - } catch (InvalidObjectException e) { - e.printStackTrace(); - } - } - - private void deleteUser(String phone) { - DeleteUser deleteUser = new DeleteUser(phone); - publishMessage(Topics.getAuthTopic(maxNode), deleteUser.encode()); - } + ArrayList topicsList = new ArrayList<>(); + ArrayList qosList = new ArrayList<>(); - private void confirmSms(String smsCode, Token token) { - Verify verify = new Verify(smsCode); - VerifyAccount verifyAccount = new VerifyAccount(verify, token); - publishMessage(Topics.getAuthTopic(maxNode), verifyAccount.encode()); - } - - private void resendSms(Token token) { - ResendSms resendSms = new ResendSms(token); - publishMessage(Topics.getAuthTopic(maxNode), resendSms.encode()); - } - - private void requestSms(String phone) { - Auth auth = new Auth(); - auth.phone = phone; - publishMessage(Topics.getAuthTopic(maxNode), auth.encode()); - } - - private void subscribeForTopics() { - try { - String[] actions = new String[]{Actions.ACTION_AUTH}; - int[] qos = {2}; - serverClient.subscribe(actions, qos); + for (Map.Entry item : topics.entrySet()) { + topicsList.add(item.getKey()); + qosList.add(item.getValue()); + } + serverClient.subscribe(topicsList.toArray(new String[]{}), toIntArray(qosList)); } catch (MqttException e) { - e.printStackTrace(); + Timber.e(e); } } - private void publishMessageTest(String topic, Object object) { - MqttMessage message = new MqttMessage(encode(object)); - byte[] payload = message.getPayload(); - Log.e("Test", ServerTestHelper.convertToString(payload)); + private int[] toIntArray(List list) { + int[] ret = new int[list.size()]; + int i = 0; + for (Integer e : list) + ret[i++] = e; + return ret; } - private void publishMessage(String topic, Object object) { + private void publishMessage(int messageId, String topic, Object object) { MqttMessage message = new MqttMessage(encode(object)); + message.setId(messageId); + message.setQos(1); try { - Timber.d(TAG + " message for server: " + message.toString()); + Timber.d(TAG + " message to server: " + message.toString()); serverClient.publish(topic, message); } catch (MqttException e) { - e.printStackTrace(); + Timber.e(e); } } @@ -234,9 +219,11 @@ public class PahoService extends Service { String ACTION_AUTH = "actions/api/ClientId"; } + //TEST public void testAllAuthReuqest() { String smsCode = "1234"; Token token = new Token(); + String phone = "380632889890"; token.data = "123324t5y6tu7iyul,mvghcfg"; if (maxNode == -1) { maxNode = 4; @@ -245,19 +232,25 @@ public class PahoService extends Service { //requestSms Auth auth = new Auth(); auth.phone = phone; - publishMessageTest(Topics.getAuthTopic(maxNode), auth.encode()); + publishMessageTest(getAuthTopic(), auth.encode()); //resendSms ResendSms resendSms = new ResendSms(token); - publishMessageTest(Topics.getAuthTopic(maxNode), resendSms.encode()); + publishMessageTest(getAuthTopic(), resendSms.encode()); //confirmSms Verify verify = new Verify(smsCode); VerifyAccount verifyAccount = new VerifyAccount(verify, token); - publishMessageTest(Topics.getAuthTopic(maxNode), verifyAccount.encode()); + publishMessageTest(getAuthTopic(), verifyAccount.encode()); // deleteUser DeleteUser deleteUser = new DeleteUser(phone); - publishMessageTest(Topics.getAuthTopic(maxNode), deleteUser.encode()); + publishMessageTest(getAuthTopic(), deleteUser.encode()); + } + + private void publishMessageTest(String topic, Object object) { + MqttMessage message = new MqttMessage(encode(object)); + byte[] payload = message.getPayload(); + Log.e("Test", ServerTestHelper.convertToString(payload)); } } diff --git a/app/src/main/java/com/ninja/mobile/data/server/ServerTestHelper.java b/app/src/main/java/com/ninja/mobile/communicator/data/server/ServerTestHelper.java similarity index 97% rename from app/src/main/java/com/ninja/mobile/data/server/ServerTestHelper.java rename to app/src/main/java/com/ninja/mobile/communicator/data/server/ServerTestHelper.java index fec2448a8ed03ea7ce28f7ed46dd9adcbd306b08..e9c03e826877f323dc9b41d1cd9054786876e7bd 100644 --- a/app/src/main/java/com/ninja/mobile/data/server/ServerTestHelper.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/server/ServerTestHelper.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.server; +package com.ninja.mobile.communicator.data.server; import android.util.Log; diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/server/Topics.java b/app/src/main/java/com/ninja/mobile/communicator/data/server/Topics.java new file mode 100644 index 0000000000000000000000000000000000000000..41375b72b03a8c877255ae9da6e1c0209935420e --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/data/server/Topics.java @@ -0,0 +1,20 @@ +package com.ninja.mobile.communicator.data.server; + +import android.support.annotation.NonNull; + +import java.util.Locale; +import java.util.Random; + +public class Topics { + private final static String AUTH_TOPIC = "events/%d/api/anon/%s/%s"; + private final static String ACTIONS_API_CLIENT_ID = "actions/api/%s"; + + public static String getAuthTopic(int node, @NonNull String clientId, @NonNull String token) { + int nextInt = new Random().nextInt(node); + return String.format(Locale.getDefault(), AUTH_TOPIC, nextInt + 1, clientId, token); + } + + public static String getAction(String clientId) { + return String.format(Locale.getDefault(), ACTIONS_API_CLIENT_ID, clientId); + } +} diff --git a/app/src/main/java/com/ninja/mobile/data/server/bert/Bert.java b/app/src/main/java/com/ninja/mobile/communicator/data/server/bert/Bert.java similarity index 98% rename from app/src/main/java/com/ninja/mobile/data/server/bert/Bert.java rename to app/src/main/java/com/ninja/mobile/communicator/data/server/bert/Bert.java index 5ab8ab9e04cecf3e66e77487faa4804eed80eebf..bea193d61a7e34f94ac842c872393d642535058d 100644 --- a/app/src/main/java/com/ninja/mobile/data/server/bert/Bert.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/server/bert/Bert.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.server.bert; +package com.ninja.mobile.communicator.data.server.bert; import java.nio.charset.Charset; import java.util.ArrayList; diff --git a/app/src/main/java/com/ninja/mobile/data/server/bert/BertAtom.java b/app/src/main/java/com/ninja/mobile/communicator/data/server/bert/BertAtom.java similarity index 92% rename from app/src/main/java/com/ninja/mobile/data/server/bert/BertAtom.java rename to app/src/main/java/com/ninja/mobile/communicator/data/server/bert/BertAtom.java index d72db81a3f06235e44cbc0fc13db917d0fab8462..4fa2ccd5358118cc4cc4725ce736f10f9b4a8e3b 100644 --- a/app/src/main/java/com/ninja/mobile/data/server/bert/BertAtom.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/server/bert/BertAtom.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.server.bert; +package com.ninja.mobile.communicator.data.server.bert; import android.support.annotation.NonNull; import android.text.TextUtils; diff --git a/app/src/main/java/com/ninja/mobile/data/server/bert/BertDecoder.java b/app/src/main/java/com/ninja/mobile/communicator/data/server/bert/BertDecoder.java similarity index 99% rename from app/src/main/java/com/ninja/mobile/data/server/bert/BertDecoder.java rename to app/src/main/java/com/ninja/mobile/communicator/data/server/bert/BertDecoder.java index ca52b2e8736b59905c1fe1af578727f6371f8787..1ad108ae7813e0e2f4cad0f5f564acaba8a048d1 100644 --- a/app/src/main/java/com/ninja/mobile/data/server/bert/BertDecoder.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/server/bert/BertDecoder.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.server.bert; +package com.ninja.mobile.communicator.data.server.bert; import android.text.TextUtils; diff --git a/app/src/main/java/com/ninja/mobile/data/server/bert/BertEncoder.java b/app/src/main/java/com/ninja/mobile/communicator/data/server/bert/BertEncoder.java similarity index 99% rename from app/src/main/java/com/ninja/mobile/data/server/bert/BertEncoder.java rename to app/src/main/java/com/ninja/mobile/communicator/data/server/bert/BertEncoder.java index d7820f14d80a59b6fd4be10f7412832da78fe34b..d2328af3bebc46c6b721f05c94601131307a9447 100644 --- a/app/src/main/java/com/ninja/mobile/data/server/bert/BertEncoder.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/server/bert/BertEncoder.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.server.bert; +package com.ninja.mobile.communicator.data.server.bert; import java.lang.reflect.Array; import java.math.BigInteger; diff --git a/app/src/main/java/com/ninja/mobile/data/server/bert/BertTuple.java b/app/src/main/java/com/ninja/mobile/communicator/data/server/bert/BertTuple.java similarity index 71% rename from app/src/main/java/com/ninja/mobile/data/server/bert/BertTuple.java rename to app/src/main/java/com/ninja/mobile/communicator/data/server/bert/BertTuple.java index cab28254f5efad1027f90df53d215bd41ab8ce15..ccfb5c5f9dae4320360b6b388454d6dea81b3394 100644 --- a/app/src/main/java/com/ninja/mobile/data/server/bert/BertTuple.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/server/bert/BertTuple.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.server.bert; +package com.ninja.mobile.communicator.data.server.bert; import java.util.ArrayList; diff --git a/app/src/main/java/com/ninja/mobile/data/server/bert/DistributionHeader.java b/app/src/main/java/com/ninja/mobile/communicator/data/server/bert/DistributionHeader.java similarity index 94% rename from app/src/main/java/com/ninja/mobile/data/server/bert/DistributionHeader.java rename to app/src/main/java/com/ninja/mobile/communicator/data/server/bert/DistributionHeader.java index 8aa26032ed6608653811158e4d47011af253b3ba..8ddfe910ebc2b6dd6330bad7018f64b73762eb41 100644 --- a/app/src/main/java/com/ninja/mobile/data/server/bert/DistributionHeader.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/server/bert/DistributionHeader.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.data.server.bert; +package com.ninja.mobile.communicator.data.server.bert; interface DistributionHeader { diff --git a/app/src/main/java/com/ninja/mobile/injection/ActivityContext.java b/app/src/main/java/com/ninja/mobile/communicator/injection/ActivityContext.java similarity index 86% rename from app/src/main/java/com/ninja/mobile/injection/ActivityContext.java rename to app/src/main/java/com/ninja/mobile/communicator/injection/ActivityContext.java index a423d93f55f0e3583f4de66a08f71a8f5ada1c29..47b969019e0e8cfb2beb9d33245ec431f501f278 100644 --- a/app/src/main/java/com/ninja/mobile/injection/ActivityContext.java +++ b/app/src/main/java/com/ninja/mobile/communicator/injection/ActivityContext.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.injection; +package com.ninja.mobile.communicator.injection; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/app/src/main/java/com/ninja/mobile/injection/ApplicationComponent.java b/app/src/main/java/com/ninja/mobile/communicator/injection/ApplicationComponent.java similarity index 67% rename from app/src/main/java/com/ninja/mobile/injection/ApplicationComponent.java rename to app/src/main/java/com/ninja/mobile/communicator/injection/ApplicationComponent.java index 68497acb6c0b185f7e5022fc77548e6f6c1cb5f6..05f36a0f4eea788cb44be09ad00acee9cde23246 100644 --- a/app/src/main/java/com/ninja/mobile/injection/ApplicationComponent.java +++ b/app/src/main/java/com/ninja/mobile/communicator/injection/ApplicationComponent.java @@ -1,10 +1,10 @@ -package com.ninja.mobile.injection; +package com.ninja.mobile.communicator.injection; import android.content.Context; -import com.ninja.mobile.data.DataManager; -import com.ninja.mobile.data.RxBus; -import com.ninja.mobile.data.server.PahoService; +import com.ninja.mobile.communicator.data.DataManager; +import com.ninja.mobile.communicator.data.RxBus; +import com.ninja.mobile.communicator.data.server.PahoService; import javax.inject.Singleton; diff --git a/app/src/main/java/com/ninja/mobile/injection/ApplicationContext.java b/app/src/main/java/com/ninja/mobile/communicator/injection/ApplicationContext.java similarity index 86% rename from app/src/main/java/com/ninja/mobile/injection/ApplicationContext.java rename to app/src/main/java/com/ninja/mobile/communicator/injection/ApplicationContext.java index a33c48d35eb3719b913f7cff8eb32799803dcf74..40219e37d7794a16e103839a04258a00dbf0ca03 100644 --- a/app/src/main/java/com/ninja/mobile/injection/ApplicationContext.java +++ b/app/src/main/java/com/ninja/mobile/communicator/injection/ApplicationContext.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.injection; +package com.ninja.mobile.communicator.injection; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/app/src/main/java/com/ninja/mobile/injection/ApplicationModule.java b/app/src/main/java/com/ninja/mobile/communicator/injection/ApplicationModule.java similarity index 87% rename from app/src/main/java/com/ninja/mobile/injection/ApplicationModule.java rename to app/src/main/java/com/ninja/mobile/communicator/injection/ApplicationModule.java index b54885a5f69426aeb783314d8d4753506dc1f6f3..70ddfbd68b8205773143bb193f4c8bde3ca8c4d6 100644 --- a/app/src/main/java/com/ninja/mobile/injection/ApplicationModule.java +++ b/app/src/main/java/com/ninja/mobile/communicator/injection/ApplicationModule.java @@ -1,9 +1,9 @@ -package com.ninja.mobile.injection; +package com.ninja.mobile.communicator.injection; import android.app.Application; import android.content.Context; -import com.ninja.mobile.data.RxBus; +import com.ninja.mobile.communicator.data.RxBus; import javax.inject.Singleton; diff --git a/app/src/main/java/com/ninja/mobile/intetfaces/APIManager.java b/app/src/main/java/com/ninja/mobile/communicator/intetfaces/APIManager.java similarity index 58% rename from app/src/main/java/com/ninja/mobile/intetfaces/APIManager.java rename to app/src/main/java/com/ninja/mobile/communicator/intetfaces/APIManager.java index 3f38453b0a34135a5aebe9c18775d84393b020f2..4b14451d5c6701085a05af76b58645cedcff0247 100644 --- a/app/src/main/java/com/ninja/mobile/intetfaces/APIManager.java +++ b/app/src/main/java/com/ninja/mobile/communicator/intetfaces/APIManager.java @@ -1,6 +1,6 @@ -package com.ninja.mobile.intetfaces; +package com.ninja.mobile.communicator.intetfaces; -import com.ninja.mobile.data.models.temp_models.Account; +import com.ninja.mobile.communicator.data.models.temp_models.Account; import java.util.List; diff --git a/app/src/main/java/com/ninja/mobile/intetfaces/OnChooserPhotoDialogListener.java b/app/src/main/java/com/ninja/mobile/communicator/intetfaces/OnChooserPhotoDialogListener.java similarity index 74% rename from app/src/main/java/com/ninja/mobile/intetfaces/OnChooserPhotoDialogListener.java rename to app/src/main/java/com/ninja/mobile/communicator/intetfaces/OnChooserPhotoDialogListener.java index 94cd2a649dc3c3bd89be93c7c140f2a1e3db2ed2..2486903b6546402c1d17fb7be2852b05305ee371 100644 --- a/app/src/main/java/com/ninja/mobile/intetfaces/OnChooserPhotoDialogListener.java +++ b/app/src/main/java/com/ninja/mobile/communicator/intetfaces/OnChooserPhotoDialogListener.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.intetfaces; +package com.ninja.mobile.communicator.intetfaces; /* * Created by Bo on 29.06.2017. diff --git a/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/AddContactsFromPhonePresenter.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/AddContactsFromPhonePresenter.java new file mode 100644 index 0000000000000000000000000000000000000000..0cb8ca74a5260323d91ed5e0b8720bc23b18f148 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/AddContactsFromPhonePresenter.java @@ -0,0 +1,23 @@ +package com.ninja.mobile.communicator.mvp.presenters; + +import com.arellomobile.mvp.InjectViewState; +import com.ninja.mobile.communicator.data.models.mqtt.Person; +import com.ninja.mobile.communicator.mvp.view.AddContactsFromPhoneView; + +import java.util.List; + +@InjectViewState +public class AddContactsFromPhonePresenter extends BasePresenter { + public void getContactsFromNinja(){ + //TODO get contacts from ninja server +// List contacts = mDataManager.getContactsFromPhone(); + List contacts = Person.getMockData(); + getViewState().setAllContacts(contacts); + } + + public void AddContact(Person contact){ + //TODO + getViewState().addContact(contact); + } + +} diff --git a/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/BaseErrorPresenter.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/BaseErrorPresenter.java new file mode 100644 index 0000000000000000000000000000000000000000..6de36ca370b80ac9695d0d17e46632a9e0485cc2 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/BaseErrorPresenter.java @@ -0,0 +1,18 @@ +package com.ninja.mobile.communicator.mvp.presenters; + +import com.ninja.mobile.communicator.mvp.view.ErrorMvpView; + +/** + * Created by dmitro.boiko on 06/07/2017. + */ + +public class BaseErrorPresenter extends BasePresenter { + + public BaseErrorPresenter() { + addDisposable(mDataManager.getErrorSubject() + .subscribe(data -> { + if (getViewState() != null) + getViewState().showInternetError(); + })); + } +} diff --git a/app/src/main/java/com/ninja/mobile/mvp/presenters/BasePresenter.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/BasePresenter.java similarity index 72% rename from app/src/main/java/com/ninja/mobile/mvp/presenters/BasePresenter.java rename to app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/BasePresenter.java index ba2f206f004524392a3047a3e9c992bc54fcba15..aa0036850fa38e10abd1ecd501f6507217c156ee 100644 --- a/app/src/main/java/com/ninja/mobile/mvp/presenters/BasePresenter.java +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/BasePresenter.java @@ -1,12 +1,13 @@ -package com.ninja.mobile.mvp.presenters; +package com.ninja.mobile.communicator.mvp.presenters; import com.arellomobile.mvp.MvpPresenter; import com.arellomobile.mvp.MvpView; -import com.ninja.mobile.NynjaApp; -import com.ninja.mobile.data.DataManager; +import com.ninja.mobile.communicator.NynjaApp; +import com.ninja.mobile.communicator.data.DataManager; import io.reactivex.disposables.CompositeDisposable; import io.reactivex.disposables.Disposable; +import ru.terrakok.cicerone.Router; /** * Date: 30.06.17 @@ -19,12 +20,14 @@ import io.reactivex.disposables.Disposable; public class BasePresenter extends MvpPresenter { protected DataManager mDataManager; + protected Router router; private CompositeDisposable mCompositeDisposable; BasePresenter() { mDataManager = NynjaApp.getComponent().dataManager(); mCompositeDisposable = new CompositeDisposable(); + router = NynjaApp.getRouter(); } public void addDisposable(Disposable disposable) { @@ -35,4 +38,8 @@ public class BasePresenter extends MvpPresenter { super.destroyView(view); mCompositeDisposable.dispose(); } + + public void onBackCommandClick() { + router.exit(); + } } diff --git a/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/CodeInputPresenter.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/CodeInputPresenter.java new file mode 100644 index 0000000000000000000000000000000000000000..042f29292c5567176a396165104134160005b22c --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/CodeInputPresenter.java @@ -0,0 +1,72 @@ +package com.ninja.mobile.communicator.mvp.presenters; + +import com.arellomobile.mvp.InjectViewState; +import com.ninja.mobile.communicator.data.models.events.ServerData; +import com.ninja.mobile.communicator.data.models.mqtt.TokenResponse; +import com.ninja.mobile.communicator.data.server.Topics; +import com.ninja.mobile.communicator.data.server.bert.BertDecoder; +import com.ninja.mobile.communicator.data.server.bert.BertTuple; +import com.ninja.mobile.communicator.mvp.view.CodeInputView; +import com.ninja.mobile.communicator.utils.ValidationUtils; + +import timber.log.Timber; + +/** + * Created by dmitro.boiko on 05/07/2017. + */ +@InjectViewState +public class CodeInputPresenter extends BaseErrorPresenter { + + public CodeInputPresenter() { + addDisposable(mDataManager.getInputSubject() + .filter(data -> data instanceof ServerData) + .map(data -> (ServerData) data) + .filter(data -> data.getData().getTopic().equalsIgnoreCase(Topics.getAction(mDataManager.getClientId()))) + .subscribe(serverData -> handleServerResponse(serverData.getData().getPayload()), Timber::e)); + } + + public void onResendClick() { + mDataManager.resendSms(); + } + + public void onConfirmClick(String code) { + if (ValidationUtils.isCodeValid(code)) { + mDataManager.confirmSms(code); + } else { + showCodeErrorMessage("Code is too small.", -1); + } + } + + private void handleServerResponse(byte[] payload) { + try { + BertDecoder bertDecoder = BertDecoder.setupDecoder().withDecodeAtomAsString(true); + BertTuple bertTuple = (BertTuple) bertDecoder.decodeAny(payload); + TokenResponse resendSmsResponse = new TokenResponse().decode(bertTuple); + if (resendSmsResponse.mIo.isSuccess()) { + switch (resendSmsResponse.mIo.getStatus()) { + case "login": + case "session_verified": + navigateToMyProfile(); + break; + + case "sms_send": + getViewState().showSuccessCodeSendMessage(); + break; + } + } else { + showCodeErrorMessage(resendSmsResponse.mIo.getStatus(), -1); + } + } catch (Exception e) { + Timber.e(e); + } + } + + private void showCodeErrorMessage(String message, int errorCode) { + getViewState().showCodeError(message, errorCode); + } + + private void navigateToMyProfile() { + getViewState().navigateToMyProfileScreen(); + } + +} diff --git a/app/src/main/java/com/ninja/mobile/mvp/presenters/EditProfilePresenter.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/EditProfilePresenter.java similarity index 78% rename from app/src/main/java/com/ninja/mobile/mvp/presenters/EditProfilePresenter.java rename to app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/EditProfilePresenter.java index 454dc84fd5eee324a4bb2d421541f8ebf7eaaafb..aad0a01649e38a71b8f611bad234bd4db2e95956 100644 --- a/app/src/main/java/com/ninja/mobile/mvp/presenters/EditProfilePresenter.java +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/EditProfilePresenter.java @@ -1,11 +1,11 @@ -package com.ninja.mobile.mvp.presenters; +package com.ninja.mobile.communicator.mvp.presenters; import android.text.TextUtils; import com.arellomobile.mvp.InjectViewState; -import com.ninja.mobile.data.models.temp_models.Person; -import com.ninja.mobile.mvp.view.EditProfileView; -import com.ninja.mobile.utils.ValidationUtils; +import com.ninja.mobile.communicator.data.models.temp_models.Person; +import com.ninja.mobile.communicator.mvp.view.EditProfileView; +import com.ninja.mobile.communicator.utils.ValidationUtils; /** * Date: 25.06.17 @@ -22,7 +22,7 @@ public class EditProfilePresenter extends BasePresenter { } public void saveClick(String firstName, String lastName) { - if (ValidationUtils.isNameVaild(firstName)) { + if (ValidationUtils.isNameValid(firstName)) { //// FIXME: 29.06.2017 update on server Person userPerson = new Person(); userPerson.setName(firstName); diff --git a/app/src/main/java/com/ninja/mobile/mvp/presenters/LoginPresenter.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/LoginPresenter.java similarity index 62% rename from app/src/main/java/com/ninja/mobile/mvp/presenters/LoginPresenter.java rename to app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/LoginPresenter.java index 4f07b760fcfbeb06c7114466057b0dbf81c010a1..437199f06b5836a0787661eb7b06c2951c682a6d 100644 --- a/app/src/main/java/com/ninja/mobile/mvp/presenters/LoginPresenter.java +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/LoginPresenter.java @@ -1,11 +1,21 @@ -package com.ninja.mobile.mvp.presenters; +package com.ninja.mobile.communicator.mvp.presenters; import com.arellomobile.mvp.InjectViewState; -import com.ninja.mobile.data.CountryHelper; -import com.ninja.mobile.mvp.view.LoginView; -import com.ninja.mobile.utils.Utils; +import com.ninja.mobile.communicator.data.CountryHelper; +import com.ninja.mobile.communicator.data.models.events.ServerData; +import com.ninja.mobile.communicator.data.models.mqtt.TokenResponse; +import com.ninja.mobile.communicator.data.server.Topics; +import com.ninja.mobile.communicator.data.server.bert.BertDecoder; +import com.ninja.mobile.communicator.data.server.bert.BertTuple; +import com.ninja.mobile.communicator.mvp.view.LoginView; +import com.ninja.mobile.communicator.ui.activities.MainActivity; +import com.ninja.mobile.communicator.ui.fragments.signin.CodeInputFragment; +import com.ninja.mobile.communicator.utils.Utils; + +import java.io.InvalidObjectException; import io.reactivex.Observable; +import timber.log.Timber; /** * Date: 25.06.17 @@ -50,10 +60,17 @@ public class LoginPresenter extends BasePresenter { return; } - //// FIXME: 02.07.17 send get sms request and navigate to enter code screen - getViewState().navigateToProfile(); + addDisposable(mDataManager.getInputSubject() + .filter(data -> data instanceof ServerData) + .map(data -> (ServerData) data) + .filter(data -> data.getData().getTopic().equalsIgnoreCase(Topics.getAction(mDataManager.getClientId()))) + .subscribe(data -> handleAuth(data.getData().getPayload()), Timber::e)); + + mDataManager.requestSms(String.format("%s%s", mCode, mPhone)); } + private void navigateToCodeScreen() {router.replaceScreen(CodeInputFragment.class.getSimpleName());} + public void setCodeObservable(Observable observable) { addDisposable(observable.subscribe(code -> { mCode = code; @@ -77,7 +94,7 @@ public class LoginPresenter extends BasePresenter { country = mCountryHelper.codesMap.get(sub); if (country != null) { ok = true; - textToSet = text.substring(a, text.length()) + mPhone; + textToSet = text.substring(a, text.length()) + mPhone; getViewState().setCode(text = sub); break; } @@ -113,6 +130,7 @@ public class LoginPresenter extends BasePresenter { mIgnoreOnTextChange = false; })); } + public void setPhoneObservable(Observable observable) { addDisposable(observable.subscribe(phone -> mPhone = phone)); } @@ -128,7 +146,50 @@ public class LoginPresenter extends BasePresenter { mIgnoreOnTextChange = false; } - public void showCountryList() { + private void showCountryList() { getViewState().setCountryList(mCountryHelper.countriesArray); } + + private void handleAuth(byte[] payload) { + try { + BertDecoder bertDecoder = BertDecoder.setupDecoder().withDecodeAtomAsString(true); + BertTuple bertTuple = (BertTuple) bertDecoder.decodeAny(payload); + TokenResponse tokenResponse = new TokenResponse().decode(bertTuple); + if (tokenResponse.mIo.isSuccess()) { + switch (tokenResponse.mIo.getStatus()) { + case "login": + navigateToMainScreen(); + break; + + case "send_sms": + case "sms_sent_successfully": + navigateToCodeScreen(); + break; + default: + //ShowError + } + } else { + switch (tokenResponse.mIo.getStatus()) { + case "not_verified": + mDataManager.resendSms(); + break; + + case "sms_send": + break; + + case "mismatch_user_data": + break; + + case "Error": + break; + } + } + } catch (InvalidObjectException e) { + Timber.e(e); + } + } + + private void navigateToMainScreen() { + router.navigateTo(MainActivity.class.getSimpleName()); + } } diff --git a/app/src/main/java/com/ninja/mobile/mvp/presenters/MyProfilePresenter.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/MyProfilePresenter.java similarity index 85% rename from app/src/main/java/com/ninja/mobile/mvp/presenters/MyProfilePresenter.java rename to app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/MyProfilePresenter.java index e927add4ba443686e1dc538b11dd1d96dffd0c23..1c3b1775690d81c25f731aaeaa5361602d032b80 100644 --- a/app/src/main/java/com/ninja/mobile/mvp/presenters/MyProfilePresenter.java +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/MyProfilePresenter.java @@ -1,7 +1,7 @@ -package com.ninja.mobile.mvp.presenters; +package com.ninja.mobile.communicator.mvp.presenters; import com.arellomobile.mvp.InjectViewState; -import com.ninja.mobile.mvp.view.MyProfileView; +import com.ninja.mobile.communicator.mvp.view.MyProfileView; /** * Created by Max Chervatiuk on 25.06.17. diff --git a/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/SplashPresenter.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/SplashPresenter.java new file mode 100644 index 0000000000000000000000000000000000000000..ec6cafb59cfba17e44a0ae7d4e1f99c3c4471e42 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/SplashPresenter.java @@ -0,0 +1,22 @@ +package com.ninja.mobile.communicator.mvp.presenters; + +import com.arellomobile.mvp.InjectViewState; +import com.ninja.mobile.communicator.mvp.view.SplashView; + +/** + * Created by Max Chervatiuk on 25.06.17. + * Email: duo.blood@gmail.com + */ +@InjectViewState +public class SplashPresenter extends BasePresenter { + + public void navigateTo() { + if (mDataManager.getToken().isEmpty()) { + getViewState().navigateToLogin(); + } else { + getViewState().navigateToMainScreen(); + } + } + + ; +} diff --git a/app/src/main/java/com/ninja/mobile/mvp/presenters/UserProfilePresenter.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/UserProfilePresenter.java similarity index 87% rename from app/src/main/java/com/ninja/mobile/mvp/presenters/UserProfilePresenter.java rename to app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/UserProfilePresenter.java index e9a4d1a1badf38f3595c70a3fa0f8a0b4d6ca1bc..05d644d31ce98ef786199e00a87cb15ab8363758 100644 --- a/app/src/main/java/com/ninja/mobile/mvp/presenters/UserProfilePresenter.java +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/UserProfilePresenter.java @@ -1,8 +1,8 @@ -package com.ninja.mobile.mvp.presenters; +package com.ninja.mobile.communicator.mvp.presenters; import com.arellomobile.mvp.InjectViewState; -import com.ninja.mobile.data.models.temp_models.Account; -import com.ninja.mobile.mvp.view.UserProfileView; +import com.ninja.mobile.communicator.data.models.temp_models.Account; +import com.ninja.mobile.communicator.mvp.view.UserProfileView; import io.reactivex.Single; import io.reactivex.android.schedulers.AndroidSchedulers; diff --git a/app/src/main/java/com/ninja/mobile/communicator/mvp/view/AddContactsFromPhoneView.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/AddContactsFromPhoneView.java new file mode 100644 index 0000000000000000000000000000000000000000..0ef758760d5996fc42a0f5458aa7255b9f4d15b6 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/AddContactsFromPhoneView.java @@ -0,0 +1,11 @@ +package com.ninja.mobile.communicator.mvp.view; + +import com.arellomobile.mvp.MvpView; +import com.ninja.mobile.communicator.data.models.mqtt.Person; + +import java.util.List; + +public interface AddContactsFromPhoneView extends MvpView{ + void setAllContacts(List contacts); + void addContact(Person contact); +} diff --git a/app/src/main/java/com/ninja/mobile/communicator/mvp/view/CodeInputView.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/CodeInputView.java new file mode 100644 index 0000000000000000000000000000000000000000..0f5ab9d07f4b21e6f956143ad40291a539ac45ae --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/CodeInputView.java @@ -0,0 +1,12 @@ +package com.ninja.mobile.communicator.mvp.view; + +/** + * Created by dmitro.boiko on 05/07/2017. + */ + +public interface CodeInputView extends ErrorMvpView { + + void navigateToMyProfileScreen(); + + void showSuccessCodeSendMessage(); +} diff --git a/app/src/main/java/com/ninja/mobile/mvp/view/EditProfileView.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/EditProfileView.java similarity index 65% rename from app/src/main/java/com/ninja/mobile/mvp/view/EditProfileView.java rename to app/src/main/java/com/ninja/mobile/communicator/mvp/view/EditProfileView.java index e2bbf5a6e544b869452bca554ca4eebc9c33c673..7543084c882abf7b403d9f2ddb202be7ff929b07 100644 --- a/app/src/main/java/com/ninja/mobile/mvp/view/EditProfileView.java +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/EditProfileView.java @@ -1,11 +1,11 @@ -package com.ninja.mobile.mvp.view; +package com.ninja.mobile.communicator.mvp.view; /* * Created by Bo on 29.06.2017. */ import com.arellomobile.mvp.MvpView; -import com.ninja.mobile.data.models.temp_models.Person; +import com.ninja.mobile.communicator.data.models.temp_models.Person; public interface EditProfileView extends MvpView { diff --git a/app/src/main/java/com/ninja/mobile/communicator/mvp/view/ErrorMvpView.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/ErrorMvpView.java new file mode 100644 index 0000000000000000000000000000000000000000..769fcfa925fe3bd2179f6d21613cd5f485335060 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/ErrorMvpView.java @@ -0,0 +1,14 @@ +package com.ninja.mobile.communicator.mvp.view; + +import com.arellomobile.mvp.MvpView; + +/** + * Created by dmitro.boiko on 05/07/2017. + */ + +public interface ErrorMvpView extends MvpView{ + + void showInternetError(); + + void showCodeError(String message, int code); +} diff --git a/app/src/main/java/com/ninja/mobile/mvp/view/LoginView.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/LoginView.java similarity index 78% rename from app/src/main/java/com/ninja/mobile/mvp/view/LoginView.java rename to app/src/main/java/com/ninja/mobile/communicator/mvp/view/LoginView.java index c26f973a52d50bb0dc4d920020ab2244f1febdae..ac0fe796630892d56038bd85da9107f147d69efd 100644 --- a/app/src/main/java/com/ninja/mobile/mvp/view/LoginView.java +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/LoginView.java @@ -1,6 +1,4 @@ -package com.ninja.mobile.mvp.view; - -import com.arellomobile.mvp.MvpView; +package com.ninja.mobile.communicator.mvp.view; import java.util.List; @@ -12,9 +10,7 @@ import java.util.List; * Email: duo.blood@gmail.com */ -public interface LoginView extends MvpView { - - void navigateToProfile(); +public interface LoginView extends ErrorMvpView { void setChooseCountryText(); diff --git a/app/src/main/java/com/ninja/mobile/mvp/view/MyProfileView.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/MyProfileView.java similarity index 87% rename from app/src/main/java/com/ninja/mobile/mvp/view/MyProfileView.java rename to app/src/main/java/com/ninja/mobile/communicator/mvp/view/MyProfileView.java index dd64419201a42c2fa0c640a221a8f359179617f6..311209deb6a546e8d0f3fd7636e55b21a1f1cc35 100644 --- a/app/src/main/java/com/ninja/mobile/mvp/view/MyProfileView.java +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/MyProfileView.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.mvp.view; +package com.ninja.mobile.communicator.mvp.view; import com.arellomobile.mvp.MvpView; diff --git a/app/src/main/java/com/ninja/mobile/mvp/view/SplashView.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/SplashView.java similarity index 60% rename from app/src/main/java/com/ninja/mobile/mvp/view/SplashView.java rename to app/src/main/java/com/ninja/mobile/communicator/mvp/view/SplashView.java index 4a035fc9f7ab292d04f7f0b6910d9af834c4d60b..867e00012b9f0dd0f7d9952814a236178a3c003b 100644 --- a/app/src/main/java/com/ninja/mobile/mvp/view/SplashView.java +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/SplashView.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.mvp.view; +package com.ninja.mobile.communicator.mvp.view; import com.arellomobile.mvp.MvpView; @@ -8,4 +8,8 @@ import com.arellomobile.mvp.MvpView; */ public interface SplashView extends MvpView { + + void navigateToMainScreen(); + + void navigateToLogin(); } diff --git a/app/src/main/java/com/ninja/mobile/mvp/view/UserProfileView.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/UserProfileView.java similarity index 69% rename from app/src/main/java/com/ninja/mobile/mvp/view/UserProfileView.java rename to app/src/main/java/com/ninja/mobile/communicator/mvp/view/UserProfileView.java index b15290e3f7677989d459d6173f9b01d330704bbf..7a4bc38f41b7fee308b34c2630a706562bc91c8c 100644 --- a/app/src/main/java/com/ninja/mobile/mvp/view/UserProfileView.java +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/UserProfileView.java @@ -1,9 +1,9 @@ -package com.ninja.mobile.mvp.view; +package com.ninja.mobile.communicator.mvp.view; import android.support.annotation.NonNull; import com.arellomobile.mvp.MvpView; -import com.ninja.mobile.data.models.temp_models.Account; +import com.ninja.mobile.communicator.data.models.temp_models.Account; /** * Created by dmitro.boiko on 03/07/2017. diff --git a/app/src/main/java/com/ninja/mobile/ui/activities/EditProfileActivity.java b/app/src/main/java/com/ninja/mobile/communicator/ui/activities/EditProfileActivity.java similarity index 64% rename from app/src/main/java/com/ninja/mobile/ui/activities/EditProfileActivity.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/activities/EditProfileActivity.java index 65d5f33b7770f7735203c3fd1b94f9d0ea742aa2..77d8f1d0a08325d4e7c066df1651490ab2b322a0 100644 --- a/app/src/main/java/com/ninja/mobile/ui/activities/EditProfileActivity.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/activities/EditProfileActivity.java @@ -1,13 +1,13 @@ -package com.ninja.mobile.ui.activities; +package com.ninja.mobile.communicator.ui.activities; import android.content.Context; import android.content.Intent; import android.os.Bundle; -import com.ninja.mobile.data.models.temp_models.Person; -import com.ninja.mobile.ui.base.BaseActivity; -import com.ninja.mobile.ui.fragments.profile.EditProfileFragment; -import com.ninja.mobile.ui.fragments.profile.MyProfileFragment; +import com.ninja.mobile.communicator.data.models.temp_models.Person; +import com.ninja.mobile.communicator.ui.base.BaseActivity; +import com.ninja.mobile.communicator.ui.fragments.profile.EditProfileFragment; +import com.ninja.mobile.communicator.ui.fragments.profile.MyProfileFragment; /** * Created by dmitro.boiko on 27/06/2017. @@ -15,7 +15,7 @@ import com.ninja.mobile.ui.fragments.profile.MyProfileFragment; public class EditProfileActivity extends BaseActivity { - public static Intent getLaunchEditProfileActivity(Context context, Person person) { + public static Intent getLaunchIntent(Context context, Person person) { Intent intent = new Intent(context, EditProfileActivity.class); intent.putExtra(MyProfileFragment.EDIT_PROFILE_TAG, person); return intent; diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/activities/MainActivity.java b/app/src/main/java/com/ninja/mobile/communicator/ui/activities/MainActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..d48cd0d7ed41d4e543413960570c6e11ab454246 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/activities/MainActivity.java @@ -0,0 +1,23 @@ +package com.ninja.mobile.communicator.ui.activities; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; + +import com.ninja.mobile.communicator.R; +import com.ninja.mobile.communicator.ui.base.BaseActivity; + +public class MainActivity extends BaseActivity { + + public static Intent getLaunchIntent(Context context) { + Intent intent = new Intent(context, MainActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK); + return intent; + } + + @Override protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + } + +} diff --git a/app/src/main/java/com/ninja/mobile/ui/activities/ProfileActivity.java b/app/src/main/java/com/ninja/mobile/communicator/ui/activities/ProfileActivity.java similarity index 77% rename from app/src/main/java/com/ninja/mobile/ui/activities/ProfileActivity.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/activities/ProfileActivity.java index ab589aeecb7636d6446d107bf2d15f09a309df78..bce983c559fda922a573fc3e043f7de273aa2565 100644 --- a/app/src/main/java/com/ninja/mobile/ui/activities/ProfileActivity.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/activities/ProfileActivity.java @@ -1,13 +1,13 @@ -package com.ninja.mobile.ui.activities; +package com.ninja.mobile.communicator.ui.activities; import android.content.Context; import android.content.Intent; import android.os.Bundle; -import com.ninja.mobile.ui.base.BaseActivity; -import com.ninja.mobile.ui.base.BaseFragment; -import com.ninja.mobile.ui.fragments.profile.MyProfileFragment; -import com.ninja.mobile.ui.fragments.profile.UserProfileFragment; +import com.ninja.mobile.communicator.ui.base.BaseActivity; +import com.ninja.mobile.communicator.ui.base.BaseFragment; +import com.ninja.mobile.communicator.ui.fragments.profile.MyProfileFragment; +import com.ninja.mobile.communicator.ui.fragments.profile.UserProfileFragment; /** * Created by dmitro.boiko on 27/06/2017. @@ -23,7 +23,7 @@ public class ProfileActivity extends BaseActivity { UserProfile, MyProfile } - public static Intent getLaunchProfileActivity(Context context, ProfileTypes profileTypes) { + public static Intent getLaunchIntent(Context context, ProfileTypes profileTypes) { Intent intent = new Intent(context, ProfileActivity.class); intent.putExtra(TYPE_TAG, profileTypes.name()); return intent; diff --git a/app/src/main/java/com/ninja/mobile/ui/activities/QRCodeGeneratorActivity.java b/app/src/main/java/com/ninja/mobile/communicator/ui/activities/QRCodeGeneratorActivity.java similarity index 75% rename from app/src/main/java/com/ninja/mobile/ui/activities/QRCodeGeneratorActivity.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/activities/QRCodeGeneratorActivity.java index edc100f42841fe28f74729610a5c968e8bec497a..e3101ee5aed451a98d56bc55773e19c1ee8fa86f 100644 --- a/app/src/main/java/com/ninja/mobile/ui/activities/QRCodeGeneratorActivity.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/activities/QRCodeGeneratorActivity.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.ui.activities; +package com.ninja.mobile.communicator.ui.activities; import android.content.Context; import android.content.Intent; @@ -7,12 +7,12 @@ import android.os.Bundle; import android.widget.ImageView; import com.google.zxing.WriterException; -import com.ninja.mobile.R; -import com.ninja.mobile.data.models.temp_models.Person; -import com.ninja.mobile.data.models.temp_models.User; -import com.ninja.mobile.ui.base.BaseActivity; -import com.ninja.mobile.ui.fragments.profile.MyProfileFragment; -import com.ninja.mobile.utils.ZxingEncoder; +import com.ninja.mobile.communicator.R; +import com.ninja.mobile.communicator.data.models.temp_models.Person; +import com.ninja.mobile.communicator.data.models.temp_models.User; +import com.ninja.mobile.communicator.ui.base.BaseActivity; +import com.ninja.mobile.communicator.ui.fragments.profile.MyProfileFragment; +import com.ninja.mobile.communicator.utils.ZxingEncoder; import butterknife.BindView; import butterknife.OnClick; @@ -27,7 +27,7 @@ public class QRCodeGeneratorActivity extends BaseActivity { @BindView(R.id.qr_code_qrcodegeneratoractivity) ImageView qrCode; - public static Intent getLaunchQRCodeGeneratorActivity(Context context, User user) { + public static Intent getLaunchIntent(Context context, User user) { Intent intent = new Intent(context, QRCodeGeneratorActivity.class); intent.putExtra(MyProfileFragment.EDIT_PROFILE_TAG, user); return intent; diff --git a/app/src/main/java/com/ninja/mobile/ui/activities/QRCodeReaderActivity.java b/app/src/main/java/com/ninja/mobile/communicator/ui/activities/QRCodeReaderActivity.java similarity index 92% rename from app/src/main/java/com/ninja/mobile/ui/activities/QRCodeReaderActivity.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/activities/QRCodeReaderActivity.java index 2d5873884811cbae00fa9efcdf388028743e36c4..1c4dca4bec9a8069d618a5f2d5f2d2c1d6d2c543 100644 --- a/app/src/main/java/com/ninja/mobile/ui/activities/QRCodeReaderActivity.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/activities/QRCodeReaderActivity.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.ui.activities; +package com.ninja.mobile.communicator.ui.activities; import android.app.AlertDialog; import android.content.Context; @@ -6,7 +6,7 @@ import android.content.Intent; import android.os.Build; import android.os.Bundle; -import com.ninja.mobile.ui.base.BaseActivity; +import com.ninja.mobile.communicator.ui.base.BaseActivity; import butterknife.OnClick; import me.dm7.barcodescanner.zbar.Result; @@ -21,7 +21,7 @@ public class QRCodeReaderActivity extends BaseActivity implements ZBarScannerVie private ZBarScannerView mScannerView; - public static Intent getLaunchQRCodeReaderActivity(Context context) { + public static Intent getLaunchIntent(Context context) { return new Intent(context, QRCodeReaderActivity.class); } diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/activities/RegistrationActivity.java b/app/src/main/java/com/ninja/mobile/communicator/ui/activities/RegistrationActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..f720ff1ed5a9760ffa830a51d486abf76e684896 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/activities/RegistrationActivity.java @@ -0,0 +1,61 @@ +package com.ninja.mobile.communicator.ui.activities; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; + +import com.ninja.mobile.communicator.NynjaApp; +import com.ninja.mobile.communicator.ui.base.BaseActivity; +import com.ninja.mobile.communicator.ui.base.BaseFragment; +import com.ninja.mobile.communicator.ui.fragments.signin.CodeInputFragment; +import com.ninja.mobile.communicator.ui.fragments.signin.LoginFragment; + +import ru.terrakok.cicerone.Navigator; +import ru.terrakok.cicerone.commands.Command; +import ru.terrakok.cicerone.commands.Forward; +import ru.terrakok.cicerone.commands.Replace; + +public class RegistrationActivity extends BaseActivity { + + private Navigator navigator = this::handleCommand; + + public static Intent getLaunchIntent(Context context) { + return new Intent(context, RegistrationActivity.class); + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getSupportFragmentManager().findFragmentById(android.R.id.content) == null) + NynjaApp.getRouter().replaceScreen(LoginFragment.class.getSimpleName()); + } + + @Override protected void onResumeFragments() { + super.onResumeFragments(); + NynjaApp.getNavigatorHolder().setNavigator(navigator); + } + + @Override + protected void onPause() { + super.onPause(); + NynjaApp.getNavigatorHolder().removeNavigator(); + } + + private void handleCommand(Command command) { + if (command instanceof Replace) { + BaseFragment fragment; + if (LoginFragment.class.getSimpleName().equalsIgnoreCase(((Replace) command).getScreenKey())) { + fragment = LoginFragment.newInstance(); + } else { + fragment = CodeInputFragment.newInstance(); + } + getSupportFragmentManager() + .beginTransaction() + .replace(android.R.id.content, fragment) + .commit(); + } + else if (command instanceof Forward){ + startActivity(MainActivity.getLaunchIntent(this)); + } + } +} diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/activities/SplashActivity.java b/app/src/main/java/com/ninja/mobile/communicator/ui/activities/SplashActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..440fcb8c81ddc265d94e775d37ef031a2809aee5 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/activities/SplashActivity.java @@ -0,0 +1,40 @@ +package com.ninja.mobile.communicator.ui.activities; + +import android.os.Bundle; +import android.support.annotation.Nullable; + +import com.arellomobile.mvp.presenter.InjectPresenter; +import com.ninja.mobile.communicator.R; +import com.ninja.mobile.communicator.data.server.PahoService; +import com.ninja.mobile.communicator.mvp.presenters.SplashPresenter; +import com.ninja.mobile.communicator.mvp.view.SplashView; +import com.ninja.mobile.communicator.ui.base.BaseActivity; + +/** + * Created by Max Chervatiuk on 22.06.17. + * Email: duo.blood@gmail.com + */ + +public class SplashActivity extends BaseActivity implements SplashView { + + @InjectPresenter SplashPresenter mSplashPresenter; + + @Override protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_splash); + startServerService(); + mSplashPresenter.navigateTo(); + } + + private void startServerService() { + this.startService(PahoService.newInstance(this)); + } + + @Override public void navigateToMainScreen() { + startActivity(MainActivity.getLaunchIntent(this)); + } + + @Override public void navigateToLogin() { + startActivity(WelcomeActivity.getLaunchIntent(this)); + } +} diff --git a/app/src/main/java/com/ninja/mobile/ui/activities/WelcomeActivity.java b/app/src/main/java/com/ninja/mobile/communicator/ui/activities/WelcomeActivity.java similarity index 61% rename from app/src/main/java/com/ninja/mobile/ui/activities/WelcomeActivity.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/activities/WelcomeActivity.java index 68642fcb9f0cbb7920fb91e9247002cff54bc4be..4f2d8387f9f329b373df29de62ddc91536b3b785 100644 --- a/app/src/main/java/com/ninja/mobile/ui/activities/WelcomeActivity.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/activities/WelcomeActivity.java @@ -1,12 +1,14 @@ -package com.ninja.mobile.ui.activities; +package com.ninja.mobile.communicator.ui.activities; +import android.content.Context; +import android.content.Intent; import android.os.Bundle; import android.support.v4.view.ViewPager; -import com.ninja.mobile.R; -import com.ninja.mobile.ui.adapters.WelcomePagerAdapter; -import com.ninja.mobile.ui.base.BaseActivity; -import com.ninja.mobile.ui.views.CirclePageIndicator; +import com.ninja.mobile.communicator.R; +import com.ninja.mobile.communicator.ui.adapters.WelcomePagerAdapter; +import com.ninja.mobile.communicator.ui.base.BaseActivity; +import com.ninja.mobile.communicator.ui.views.CirclePageIndicator; import butterknife.BindView; import butterknife.OnClick; @@ -18,6 +20,10 @@ public class WelcomeActivity extends BaseActivity { @BindView(R.id.welcome_indicator) CirclePageIndicator mIndicator; + public static Intent getLaunchIntent(Context context) { + return new Intent(context, WelcomeActivity.class); + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -33,7 +39,7 @@ public class WelcomeActivity extends BaseActivity { @OnClick({R.id.welcome_btn_next, R.id.f_welcome_btn_start}) void clickNext() { - startActivity(RegistrationActivity.getLaunchRegistrationActivity(this)); + startActivity(RegistrationActivity.getLaunchIntent(this)); } } diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/AddContactFromPhoneAdapter.java b/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/AddContactFromPhoneAdapter.java new file mode 100644 index 0000000000000000000000000000000000000000..d340eb138a85bc343f83704ab81686e1ef685c0a --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/AddContactFromPhoneAdapter.java @@ -0,0 +1,107 @@ +package com.ninja.mobile.communicator.ui.adapters; + +import android.app.Activity; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.TextView; + +import com.bumptech.glide.Glide; +import com.ninja.mobile.communicator.R; +import com.ninja.mobile.communicator.data.models.mqtt.Person; + +import java.util.List; + +import butterknife.BindView; +import butterknife.ButterKnife; + +public class AddContactFromPhoneAdapter extends RecyclerView.Adapter { + private List contacts; + private Activity mActivity; + private onContactAddClick mOnContactAddClick; + + public AddContactFromPhoneAdapter(List contacts, Activity activity) { + this.contacts = contacts; + this.mActivity = activity; + + } + + @Override + public ContactAddPhoneView onCreateViewHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_add_contacts_from_phone_recycler, parent, false); + return new ContactAddPhoneView(itemView) ; + } + + @Override + public void onBindViewHolder(ContactAddPhoneView holder, int position) { + checkForLetterHeader(holder, position); + + Person contact = contacts.get(position); + holder.name.setText(contact.name); + if (contact.isNinja){ + holder.phoneNick.setText(contact.username); + holder.add.setText(R.string.added); + holder.add.setBackground(null); + } else { + holder.phoneNick.setText(contact.phone); + holder.add.setBackgroundResource(R.drawable.red_round_button); + } + Glide.with(mActivity).load(contact.photoUrl).into(holder.photo); + + holder.add.setOnClickListener(v -> mOnContactAddClick.onAdd(contact)); + } + + private void checkForLetterHeader(ContactAddPhoneView holder, int position){ + if (position != 0){ + Person contact = contacts.get(position); + String firstLetterPrevious = contacts.get(position-1).name.substring(0,2); + String firstLetter = contact.name.substring(0,2); + + if (!firstLetterPrevious.equalsIgnoreCase(firstLetter)){ + holder.layoutWithLetter.setVisibility(View.VISIBLE); + holder.letter.setText(firstLetter.toUpperCase()); + } else { + holder.layoutWithLetter.setVisibility(View.GONE); + } + } else { + Person contact = contacts.get(position); + String firstLetter = contact.name.substring(0,1); + holder.layoutWithLetter.setVisibility(View.VISIBLE); + holder.letter.setText(firstLetter); + } + } + + @Override public int getItemCount() { + return contacts.size(); + } + + class ContactAddPhoneView extends RecyclerView.ViewHolder{ + @BindView(R.id.add_contact_from_phone_tv_name) TextView name; + @BindView(R.id.add_contact_from_phone_tv_phone) TextView phoneNick; + @BindView(R.id.add_contact_from_phone_btn_add) Button add; + @BindView(R.id.add_contact_from_phone_iv_photo) ImageView photo; + @BindView(R.id.add_contact_from_phone_tv_letter) TextView letter; + @BindView(R.id.add_contact_from_phone_fl_for_letter) View layoutWithLetter; + + ContactAddPhoneView(View itemView) { + super(itemView); + ButterKnife.bind(this, itemView); + } + } + + public void addContact(Person contact){ + contact.isNinja = true; + notifyDataSetChanged(); + } + + public void setOnAddClickLIstener(onContactAddClick onAddClickLIstener){ + this.mOnContactAddClick = onAddClickLIstener; + } + + public interface onContactAddClick{ + void onAdd(Person contact); + } +} diff --git a/app/src/main/java/com/ninja/mobile/ui/adapters/CountryWheelAdapter.java b/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/CountryWheelAdapter.java similarity index 75% rename from app/src/main/java/com/ninja/mobile/ui/adapters/CountryWheelAdapter.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/adapters/CountryWheelAdapter.java index c70f55bbd9d155bc6d8bbf3cdce16f07207c323f..c512369b89f1181640ca123dfe8dadf4526bf2d8 100644 --- a/app/src/main/java/com/ninja/mobile/ui/adapters/CountryWheelAdapter.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/CountryWheelAdapter.java @@ -1,10 +1,10 @@ -package com.ninja.mobile.ui.adapters; +package com.ninja.mobile.communicator.ui.adapters; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; -import com.ninja.mobile.ui.views.wheel.TextDrawable; -import com.ninja.mobile.ui.views.wheel.adapter.WheelArrayAdapter; +import com.ninja.mobile.communicator.ui.views.wheel.TextDrawable; +import com.ninja.mobile.communicator.ui.views.wheel.adapter.WheelArrayAdapter; import java.util.List; diff --git a/app/src/main/java/com/ninja/mobile/ui/adapters/WelcomePagerAdapter.java b/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/WelcomePagerAdapter.java similarity index 83% rename from app/src/main/java/com/ninja/mobile/ui/adapters/WelcomePagerAdapter.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/adapters/WelcomePagerAdapter.java index d09d6b0eb1c80ba6713e415f84fccd5ad0097038..47b6bfce0ffab314e4e917ef2bcc75c616552c55 100644 --- a/app/src/main/java/com/ninja/mobile/ui/adapters/WelcomePagerAdapter.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/WelcomePagerAdapter.java @@ -1,10 +1,10 @@ -package com.ninja.mobile.ui.adapters; +package com.ninja.mobile.communicator.ui.adapters; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; -import com.ninja.mobile.ui.fragments.welcome.WelcomeFragment; +import com.ninja.mobile.communicator.ui.fragments.welcome.WelcomeFragment; /** * Created by Max Chervatiuk on 24.06.17. diff --git a/app/src/main/java/com/ninja/mobile/ui/base/BaseActivity.java b/app/src/main/java/com/ninja/mobile/communicator/ui/base/BaseActivity.java similarity index 98% rename from app/src/main/java/com/ninja/mobile/ui/base/BaseActivity.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/base/BaseActivity.java index ebea36deee98ad5dd05a75903a386d0c32d8a67c..a6d850065151f3b18e8aeb06f04b2bd13ced13ae 100644 --- a/app/src/main/java/com/ninja/mobile/ui/base/BaseActivity.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/base/BaseActivity.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.ui.base; +package com.ninja.mobile.communicator.ui.base; import android.app.ProgressDialog; import android.content.Context; diff --git a/app/src/main/java/com/ninja/mobile/ui/base/BaseDialogFragment.java b/app/src/main/java/com/ninja/mobile/communicator/ui/base/BaseDialogFragment.java similarity index 93% rename from app/src/main/java/com/ninja/mobile/ui/base/BaseDialogFragment.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/base/BaseDialogFragment.java index ca8e325eb7e64dba3e9fe11521b39042f9d7a1ee..9e77e83d1d0ee834444ebdfe33e59bfc28185f8f 100644 --- a/app/src/main/java/com/ninja/mobile/ui/base/BaseDialogFragment.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/base/BaseDialogFragment.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.ui.base; +package com.ninja.mobile.communicator.ui.base; /* * Created by Bo on 29.06.2017. diff --git a/app/src/main/java/com/ninja/mobile/ui/base/BaseFragment.java b/app/src/main/java/com/ninja/mobile/communicator/ui/base/BaseFragment.java similarity index 83% rename from app/src/main/java/com/ninja/mobile/ui/base/BaseFragment.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/base/BaseFragment.java index a5dc28de7f4b9bab2d84bad3ac11b33697f7e817..d53d83e32109ea6302875d8eabb337fbe0ba5d2f 100644 --- a/app/src/main/java/com/ninja/mobile/ui/base/BaseFragment.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/base/BaseFragment.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.ui.base; +package com.ninja.mobile.communicator.ui.base; import android.os.Bundle; import android.support.annotation.Nullable; @@ -23,6 +23,7 @@ public abstract class BaseFragment extends MvpAppCompatFragment { @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); + setRetainInstance(shouldRetainInstance()); mUnBinder = ButterKnife.bind(this, view); rxPermissions = new RxPermissions(getActivity()); } @@ -34,4 +35,10 @@ public abstract class BaseFragment extends MvpAppCompatFragment { mUnBinder.unbind(); } } + + protected boolean shouldRetainInstance() { + return false; + } + + ; } diff --git a/app/src/main/java/com/ninja/mobile/ui/dialogs/ChooserPhotoDialog.java b/app/src/main/java/com/ninja/mobile/communicator/ui/dialogs/ChooserPhotoDialog.java similarity index 92% rename from app/src/main/java/com/ninja/mobile/ui/dialogs/ChooserPhotoDialog.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/dialogs/ChooserPhotoDialog.java index 388c4dbfdb731d11a40736cd67347643f21d86ca..fdf6356bbf016cdb64eac2b0bfaf4c5a0d93bfaa 100644 --- a/app/src/main/java/com/ninja/mobile/ui/dialogs/ChooserPhotoDialog.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/dialogs/ChooserPhotoDialog.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.ui.dialogs; +package com.ninja.mobile.communicator.ui.dialogs; /* * Created by Bo on 29.06.2017. @@ -16,9 +16,9 @@ import android.view.View; import android.view.ViewGroup; import android.view.Window; -import com.ninja.mobile.R; -import com.ninja.mobile.intetfaces.OnChooserPhotoDialogListener; -import com.ninja.mobile.ui.base.BaseDialogFragment; +import com.ninja.mobile.communicator.R; +import com.ninja.mobile.communicator.intetfaces.OnChooserPhotoDialogListener; +import com.ninja.mobile.communicator.ui.base.BaseDialogFragment; import butterknife.OnClick; diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/contacts/AddContactFromPhoneFragment.java b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/contacts/AddContactFromPhoneFragment.java new file mode 100644 index 0000000000000000000000000000000000000000..29987482a6d4080c799001dda25ff1f49e7b3bdd --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/contacts/AddContactFromPhoneFragment.java @@ -0,0 +1,65 @@ +package com.ninja.mobile.communicator.ui.fragments.contacts; + +import android.Manifest; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.arellomobile.mvp.presenter.InjectPresenter; +import com.ninja.mobile.communicator.R; +import com.ninja.mobile.communicator.data.models.mqtt.Person; +import com.ninja.mobile.communicator.mvp.presenters.AddContactsFromPhonePresenter; +import com.ninja.mobile.communicator.mvp.view.AddContactsFromPhoneView; +import com.ninja.mobile.communicator.ui.adapters.AddContactFromPhoneAdapter; +import com.ninja.mobile.communicator.ui.base.BaseFragment; + +import java.util.List; + +import butterknife.BindView; + +public class AddContactFromPhoneFragment extends BaseFragment implements AddContactsFromPhoneView{ + + @InjectPresenter AddContactsFromPhonePresenter mPresenter; + @BindView(R.id.addContactsFromPhone_recyclerView) RecyclerView mRecyclerView; + AddContactFromPhoneAdapter mAdapter; + + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_add_contact_from_phone, container, false); + } + + @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + getAllContacts(); + } + + private void getAllContacts(){ + rxPermissions + .request(Manifest.permission.READ_CONTACTS) + .subscribe(granted -> { + if (granted) { + mPresenter.getContactsFromNinja(); + } else { + //// FIXME: 29.06.2017 message? + } + }); + } + + @Override public void setAllContacts(List contacts) { + mAdapter = new AddContactFromPhoneAdapter(contacts, getActivity()); + mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); + mRecyclerView.setAdapter(mAdapter); + mAdapter.setOnAddClickLIstener(contact -> mPresenter.AddContact(contact)); + + } + + @Override public void addContact(Person contact) { + mAdapter.addContact(contact); + } +} diff --git a/app/src/main/java/com/ninja/mobile/ui/fragments/profile/EditProfileFragment.java b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/profile/EditProfileFragment.java similarity index 82% rename from app/src/main/java/com/ninja/mobile/ui/fragments/profile/EditProfileFragment.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/fragments/profile/EditProfileFragment.java index 4f30eb248bfa00c6bd5db4faae4ef4f36428c5b0..28ef8425a72882652c92bf928518604758e68b1d 100644 --- a/app/src/main/java/com/ninja/mobile/ui/fragments/profile/EditProfileFragment.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/profile/EditProfileFragment.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.ui.fragments.profile; +package com.ninja.mobile.communicator.ui.fragments.profile; import android.app.Activity; import android.content.Intent; @@ -10,12 +10,12 @@ import android.view.View; import android.view.ViewGroup; import com.arellomobile.mvp.presenter.InjectPresenter; -import com.ninja.mobile.R; -import com.ninja.mobile.data.models.temp_models.Person; -import com.ninja.mobile.mvp.presenters.EditProfilePresenter; -import com.ninja.mobile.mvp.view.EditProfileView; -import com.ninja.mobile.ui.base.BaseFragment; -import com.ninja.mobile.utils.StringUtils; +import com.ninja.mobile.communicator.R; +import com.ninja.mobile.communicator.data.models.temp_models.Person; +import com.ninja.mobile.communicator.mvp.presenters.EditProfilePresenter; +import com.ninja.mobile.communicator.mvp.view.EditProfileView; +import com.ninja.mobile.communicator.ui.base.BaseFragment; +import com.ninja.mobile.communicator.utils.StringUtils; import butterknife.BindView; import butterknife.OnClick; diff --git a/app/src/main/java/com/ninja/mobile/ui/fragments/profile/MyProfileFragment.java b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/profile/MyProfileFragment.java similarity index 86% rename from app/src/main/java/com/ninja/mobile/ui/fragments/profile/MyProfileFragment.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/fragments/profile/MyProfileFragment.java index 9e786b657ff69708fc532df13e3a8e47830ed303..a5f0aa10375dc46da1c89a6e3de990e3f4b747f9 100644 --- a/app/src/main/java/com/ninja/mobile/ui/fragments/profile/MyProfileFragment.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/profile/MyProfileFragment.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.ui.fragments.profile; +package com.ninja.mobile.communicator.ui.fragments.profile; import android.Manifest; import android.app.Activity; @@ -18,20 +18,20 @@ import android.widget.TextView; import com.arellomobile.mvp.presenter.InjectPresenter; import com.bumptech.glide.Glide; -import com.ninja.mobile.BuildConfig; -import com.ninja.mobile.R; -import com.ninja.mobile.intetfaces.OnChooserPhotoDialogListener; -import com.ninja.mobile.data.models.temp_models.Account; -import com.ninja.mobile.data.models.temp_models.Person; -import com.ninja.mobile.data.models.temp_models.User; -import com.ninja.mobile.mvp.presenters.MyProfilePresenter; -import com.ninja.mobile.mvp.view.MyProfileView; -import com.ninja.mobile.ui.activities.EditProfileActivity; -import com.ninja.mobile.ui.activities.QRCodeGeneratorActivity; -import com.ninja.mobile.ui.activities.QRCodeReaderActivity; -import com.ninja.mobile.ui.base.BaseFragment; -import com.ninja.mobile.ui.dialogs.ChooserPhotoDialog; -import com.ninja.mobile.utils.ImageUtils; +import com.ninja.mobile.communicator.BuildConfig; +import com.ninja.mobile.communicator.R; +import com.ninja.mobile.communicator.data.models.temp_models.Account; +import com.ninja.mobile.communicator.data.models.temp_models.Person; +import com.ninja.mobile.communicator.data.models.temp_models.User; +import com.ninja.mobile.communicator.intetfaces.OnChooserPhotoDialogListener; +import com.ninja.mobile.communicator.mvp.presenters.MyProfilePresenter; +import com.ninja.mobile.communicator.mvp.view.MyProfileView; +import com.ninja.mobile.communicator.ui.activities.EditProfileActivity; +import com.ninja.mobile.communicator.ui.activities.QRCodeGeneratorActivity; +import com.ninja.mobile.communicator.ui.activities.QRCodeReaderActivity; +import com.ninja.mobile.communicator.ui.base.BaseFragment; +import com.ninja.mobile.communicator.ui.dialogs.ChooserPhotoDialog; +import com.ninja.mobile.communicator.utils.ImageUtils; import java.io.File; import java.io.IOException; @@ -112,20 +112,20 @@ public class MyProfileFragment extends BaseFragment implements MyProfileView, .subscribe(granted -> { if (granted) { startActivityForResult(QRCodeReaderActivity. - getLaunchQRCodeReaderActivity(getContext()), QR_SCAN_REQUEST_CODE); + getLaunchIntent(getContext()), QR_SCAN_REQUEST_CODE); } }); } @Override public void navigateToEditProfile() { - startActivityForResult(EditProfileActivity.getLaunchEditProfileActivity(getContext(), + startActivityForResult(EditProfileActivity.getLaunchIntent(getContext(), user.getAccount().getPerson()), EDIT_PROFILE_REQUEST_CODE); } @Override public void navigateToQqCode() { - startActivity(QRCodeGeneratorActivity.getLaunchQRCodeGeneratorActivity(getContext(), user)); + startActivity(QRCodeGeneratorActivity.getLaunchIntent(getContext(), user)); } @Override diff --git a/app/src/main/java/com/ninja/mobile/ui/fragments/profile/UserProfileFragment.java b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/profile/UserProfileFragment.java similarity index 86% rename from app/src/main/java/com/ninja/mobile/ui/fragments/profile/UserProfileFragment.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/fragments/profile/UserProfileFragment.java index 468a9e57ef377d51273f6e83c717324f7ac2e8af..ea21da43a93289b1d75dbf5eac79638fa9fae9b6 100644 --- a/app/src/main/java/com/ninja/mobile/ui/fragments/profile/UserProfileFragment.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/profile/UserProfileFragment.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.ui.fragments.profile; +package com.ninja.mobile.communicator.ui.fragments.profile; import android.os.Bundle; import android.support.annotation.NonNull; @@ -10,12 +10,12 @@ import android.widget.TextView; import android.widget.Toast; import com.arellomobile.mvp.presenter.InjectPresenter; -import com.ninja.mobile.R; -import com.ninja.mobile.data.models.temp_models.Account; -import com.ninja.mobile.data.models.temp_models.Person; -import com.ninja.mobile.mvp.presenters.UserProfilePresenter; -import com.ninja.mobile.mvp.view.UserProfileView; -import com.ninja.mobile.ui.base.BaseFragment; +import com.ninja.mobile.communicator.R; +import com.ninja.mobile.communicator.data.models.temp_models.Account; +import com.ninja.mobile.communicator.data.models.temp_models.Person; +import com.ninja.mobile.communicator.mvp.presenters.UserProfilePresenter; +import com.ninja.mobile.communicator.mvp.view.UserProfileView; +import com.ninja.mobile.communicator.ui.base.BaseFragment; import butterknife.BindView; diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/signin/CodeInputFragment.java b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/signin/CodeInputFragment.java new file mode 100644 index 0000000000000000000000000000000000000000..fc16f9ac424ece82ed9df2fa1d0ea5d97c5f03ea --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/signin/CodeInputFragment.java @@ -0,0 +1,90 @@ +package com.ninja.mobile.communicator.ui.fragments.signin; + +import android.content.DialogInterface; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AlertDialog; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; +import android.widget.Toast; + +import com.arellomobile.mvp.presenter.InjectPresenter; +import com.ninja.mobile.communicator.R; +import com.ninja.mobile.communicator.mvp.presenters.CodeInputPresenter; +import com.ninja.mobile.communicator.mvp.view.CodeInputView; +import com.ninja.mobile.communicator.ui.activities.ProfileActivity; +import com.ninja.mobile.communicator.ui.base.BaseFragment; +import com.ninja.mobile.communicator.ui.views.HintEditText; +import com.ninja.mobile.communicator.utils.PhoneWatcher; +import com.ninja.mobile.communicator.utils.SpannableUtils; +import com.ninja.mobile.communicator.utils.StringUtils; + +import butterknife.BindView; +import butterknife.OnClick; + +/** + * Created by Max Chervatiuk on 23.06.17. + * Email: duo.blood@gmail.com + */ + +public class CodeInputFragment extends BaseFragment implements CodeInputView { + + @BindView(R.id.f_code_tv_repeat) TextView haventReceived; + @BindView(R.id.f_code_edt_code) HintEditText code; + + @InjectPresenter CodeInputPresenter mCodeInputPresenter; + + public static CodeInputFragment newInstance() { + return new CodeInputFragment(); + } + + @Nullable @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_input_code, container, false); + } + + @Override + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + code.addTextChangedListener(new PhoneWatcher(code)); + code.setHintText("XXX XXX XXX".replace('X', '-')); + initSpannableTerms(); + } + + private void initSpannableTerms() { + View.OnClickListener onClickListener = v -> mCodeInputPresenter.onResendClick(); + SpannableUtils.setSpannable(getActivity(), haventReceived, R.string.signin_text_have_not_received, R.string.signin_text_have_not_received, onClickListener); + } + + @OnClick(R.id.f_code_btn_next) + public void onNextClick() { + mCodeInputPresenter.onConfirmClick(StringUtils.getText(code)); + } + + @Override public void navigateToMyProfileScreen() { + startActivity(ProfileActivity.getLaunchIntent(getContext(), ProfileActivity.ProfileTypes.MyProfile)); + } + + @Override public void showSuccessCodeSendMessage() { + Toast.makeText(getContext(), R.string.code_successfully_send, Toast.LENGTH_SHORT).show(); + } + + @Override public void showInternetError() { + showAlert(getString(R.string.error_no_internet_connection), null); + } + + @Override public void showCodeError(String message, int code) { + showAlert(message, null); + } + + private void showAlert(String message, DialogInterface.OnClickListener listener) { + //// FIXME: 02.07.17 move to dialog utils/factory + AlertDialog alertDialog = new AlertDialog.Builder(getContext()).create(); + alertDialog.setTitle(getString(R.string.app_name)); + alertDialog.setMessage(message); + alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, getString(R.string.signin_text_ok), listener); + alertDialog.show(); + } +} diff --git a/app/src/main/java/com/ninja/mobile/ui/fragments/signin/InfoFragment.java b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/signin/InfoFragment.java similarity index 53% rename from app/src/main/java/com/ninja/mobile/ui/fragments/signin/InfoFragment.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/fragments/signin/InfoFragment.java index dcc49fa5ab4bdcdc7a5d730b4650e49f9f0398fe..4943ec131e3a8e9fc2a25ec4464b3e0ecb8016ca 100644 --- a/app/src/main/java/com/ninja/mobile/ui/fragments/signin/InfoFragment.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/signin/InfoFragment.java @@ -1,6 +1,6 @@ -package com.ninja.mobile.ui.fragments.signin; +package com.ninja.mobile.communicator.ui.fragments.signin; -import com.ninja.mobile.ui.base.BaseFragment; +import com.ninja.mobile.communicator.ui.base.BaseFragment; /** * Created by Max Chervatiuk on 23.06.17. diff --git a/app/src/main/java/com/ninja/mobile/ui/fragments/signin/LoginFragment.java b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/signin/LoginFragment.java similarity index 81% rename from app/src/main/java/com/ninja/mobile/ui/fragments/signin/LoginFragment.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/fragments/signin/LoginFragment.java index 00e7df8fa4b883757bf93a82e3726c8775968a36..457be676aded9532095588b5380f65ad460229eb 100644 --- a/app/src/main/java/com/ninja/mobile/ui/fragments/signin/LoginFragment.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/signin/LoginFragment.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.ui.fragments.signin; +package com.ninja.mobile.communicator.ui.fragments.signin; import android.content.DialogInterface; import android.os.Bundle; @@ -17,17 +17,16 @@ import android.widget.Toast; import com.arellomobile.mvp.presenter.InjectPresenter; import com.jakewharton.rxbinding2.widget.RxTextView; -import com.ninja.mobile.R; -import com.ninja.mobile.mvp.presenters.LoginPresenter; -import com.ninja.mobile.mvp.view.LoginView; -import com.ninja.mobile.ui.activities.ProfileActivity; -import com.ninja.mobile.ui.activities.RegistrationActivity; -import com.ninja.mobile.ui.adapters.CountryWheelAdapter; -import com.ninja.mobile.ui.base.BaseFragment; -import com.ninja.mobile.ui.views.HintEditText; -import com.ninja.mobile.ui.views.wheel.WheelView; -import com.ninja.mobile.utils.PhoneWatcher; -import com.ninja.mobile.utils.SpannableUtils; +import com.ninja.mobile.communicator.R; +import com.ninja.mobile.communicator.mvp.presenters.LoginPresenter; +import com.ninja.mobile.communicator.mvp.view.LoginView; +import com.ninja.mobile.communicator.ui.activities.RegistrationActivity; +import com.ninja.mobile.communicator.ui.adapters.CountryWheelAdapter; +import com.ninja.mobile.communicator.ui.base.BaseFragment; +import com.ninja.mobile.communicator.ui.views.HintEditText; +import com.ninja.mobile.communicator.ui.views.wheel.WheelView; +import com.ninja.mobile.communicator.utils.PhoneWatcher; +import com.ninja.mobile.communicator.utils.SpannableUtils; import java.util.List; @@ -54,6 +53,10 @@ public class LoginFragment extends BaseFragment implements LoginView { private RegistrationActivity mActivity; private Handler mHandler; + public static LoginFragment newInstance() { + return new LoginFragment(); + } + @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { @@ -65,9 +68,7 @@ public class LoginFragment extends BaseFragment implements LoginView { mActivity = (RegistrationActivity) getActivity(); mHandler = new Handler(); - mWheelView.setOnWheelItemClickListener((parent, position, isSelected) -> { - mPresenter.onCountrySelected(position); - }); + mWheelView.setOnWheelItemClickListener((parent, position, isSelected) -> mPresenter.onCountrySelected(position)); mPhoneEditText.addTextChangedListener(new PhoneWatcher(mPhoneEditText)); mPhoneEditText.setOnEditorActionListener((textView, i, keyEvent) -> { @@ -78,13 +79,13 @@ public class LoginFragment extends BaseFragment implements LoginView { return false; }); - mPresenter.setCodeObservable(RxTextView.textChanges(mCountryCode).map(CharSequence::toString)); - mPresenter.setPhoneObservable(RxTextView.textChanges(mPhoneEditText).map(CharSequence::toString)); initSpannableTerms(); } - @Override public void navigateToProfile() { - startActivity(ProfileActivity.getLaunchProfileActivity(getContext(), ProfileActivity.ProfileTypes.MyProfile)); + @Override public void onResume() { + super.onResume(); + mPresenter.setCodeObservable(RxTextView.textChanges(mCountryCode).map(CharSequence::toString)); + mPresenter.setPhoneObservable(RxTextView.textChanges(mPhoneEditText).map(CharSequence::toString)); } @OnTouch({R.id.f_iphone_edt_number, R.id.f_iphone_edt_country_code}) @@ -166,4 +167,16 @@ public class LoginFragment extends BaseFragment implements LoginView { View.OnClickListener onClickListener = v -> Toast.makeText(getActivity(), "It is not working now :-(", Toast.LENGTH_SHORT).show(); SpannableUtils.setSpannable(getActivity(), termsOfUse, R.string.signin_text_description, R.string.signin_text_description_highlight, onClickListener); } + + @Override public void showInternetError() { + Toast.makeText(getContext(), R.string.error_no_internet_connection, Toast.LENGTH_SHORT).show(); + } + + @Override public void showCodeError(String message, int code) { + + } + + @Override protected boolean shouldRetainInstance() { + return true; + } } diff --git a/app/src/main/java/com/ninja/mobile/ui/fragments/welcome/WelcomeFragment.java b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/welcome/WelcomeFragment.java similarity index 79% rename from app/src/main/java/com/ninja/mobile/ui/fragments/welcome/WelcomeFragment.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/fragments/welcome/WelcomeFragment.java index e54383ea83caf663189547bbbd88a1bec2e4da44..337b8f0233eaf56fdc1dfee9ee9b826449b7ea6b 100644 --- a/app/src/main/java/com/ninja/mobile/ui/fragments/welcome/WelcomeFragment.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/welcome/WelcomeFragment.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.ui.fragments.welcome; +package com.ninja.mobile.communicator.ui.fragments.welcome; import android.os.Bundle; import android.support.annotation.Nullable; @@ -6,8 +6,8 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import com.ninja.mobile.R; -import com.ninja.mobile.ui.base.BaseFragment; +import com.ninja.mobile.communicator.R; +import com.ninja.mobile.communicator.ui.base.BaseFragment; /** * Created by Max Chervatiuk on 24.06.17. diff --git a/app/src/main/java/com/ninja/mobile/ui/views/CirclePageIndicator.java b/app/src/main/java/com/ninja/mobile/communicator/ui/views/CirclePageIndicator.java similarity index 99% rename from app/src/main/java/com/ninja/mobile/ui/views/CirclePageIndicator.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/views/CirclePageIndicator.java index ca1d66888d5a53c5648482a5312590dbcae2c003..f27cba752be0626af920caab9a5f49e1036d7aca 100644 --- a/app/src/main/java/com/ninja/mobile/ui/views/CirclePageIndicator.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/views/CirclePageIndicator.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.ui.views; +package com.ninja.mobile.communicator.ui.views; import android.content.Context; import android.content.res.TypedArray; @@ -16,7 +16,7 @@ import android.view.MotionEvent; import android.view.View; import android.view.ViewConfiguration; -import com.ninja.mobile.R; +import com.ninja.mobile.communicator.R; import static android.graphics.Paint.ANTI_ALIAS_FLAG; import static android.graphics.Paint.Style; diff --git a/app/src/main/java/com/ninja/mobile/ui/views/HintEditText.java b/app/src/main/java/com/ninja/mobile/communicator/ui/views/HintEditText.java similarity index 96% rename from app/src/main/java/com/ninja/mobile/ui/views/HintEditText.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/views/HintEditText.java index 387a8cc716d323bcc6e8f2aeae20f74f6b6a138c..087af6a19a5b6ba583ec2e686a931195030d819c 100644 --- a/app/src/main/java/com/ninja/mobile/ui/views/HintEditText.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/views/HintEditText.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.ui.views; +package com.ninja.mobile.communicator.ui.views; import android.content.Context; import android.graphics.Canvas; @@ -9,7 +9,7 @@ import android.support.annotation.RequiresApi; import android.util.AttributeSet; import android.widget.EditText; -import com.ninja.mobile.R; +import com.ninja.mobile.communicator.R; /** * Date: 25.06.17 diff --git a/app/src/main/java/com/ninja/mobile/ui/views/wheel/Circle.java b/app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/Circle.java similarity index 97% rename from app/src/main/java/com/ninja/mobile/ui/views/wheel/Circle.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/Circle.java index 33a66766a78ac37ff734ef24a08de4016ad33a02..17f14d7e9202d98781c88b1fe818665d4f5da1d9 100644 --- a/app/src/main/java/com/ninja/mobile/ui/views/wheel/Circle.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/Circle.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.ui.views.wheel; +package com.ninja.mobile.communicator.ui.views.wheel; import android.graphics.Rect; diff --git a/app/src/main/java/com/ninja/mobile/ui/views/wheel/DrawUtils.java b/app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/DrawUtils.java similarity index 97% rename from app/src/main/java/com/ninja/mobile/ui/views/wheel/DrawUtils.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/DrawUtils.java index 1d88068e58d8e75d63b12ee139e8ddcecba6f61e..6dce34d3c37355bd50ac02e574771b336721205d 100644 --- a/app/src/main/java/com/ninja/mobile/ui/views/wheel/DrawUtils.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/DrawUtils.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.ui.views.wheel; +package com.ninja.mobile.communicator.ui.views.wheel; import android.graphics.Canvas; import android.graphics.Paint; diff --git a/app/src/main/java/com/ninja/mobile/ui/views/wheel/TextDrawable.java b/app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/TextDrawable.java similarity index 95% rename from app/src/main/java/com/ninja/mobile/ui/views/wheel/TextDrawable.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/TextDrawable.java index cfe27b80c25f0461e11bc4a4915c700d47cb79d3..cef946ea9ac6651be50270a4481b77fbcf51f318 100644 --- a/app/src/main/java/com/ninja/mobile/ui/views/wheel/TextDrawable.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/TextDrawable.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.ui.views.wheel; +package com.ninja.mobile.communicator.ui.views.wheel; import android.graphics.Canvas; import android.graphics.Color; diff --git a/app/src/main/java/com/ninja/mobile/ui/views/wheel/WheelView.java b/app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/WheelView.java similarity index 98% rename from app/src/main/java/com/ninja/mobile/ui/views/wheel/WheelView.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/WheelView.java index 6e0191be71082fb98ca3b7e5068e854eb191b513..58b83c5e369e2a2d1dc79b315264bc074ed53974 100644 --- a/app/src/main/java/com/ninja/mobile/ui/views/wheel/WheelView.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/WheelView.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.ninja.mobile.ui.views.wheel; +package com.ninja.mobile.communicator.ui.views.wheel; import android.content.Context; import android.content.res.TypedArray; @@ -35,13 +35,13 @@ import android.view.VelocityTracker; import android.view.View; import android.view.ViewGroup; -import com.ninja.mobile.R; -import com.ninja.mobile.ui.views.wheel.adapter.WheelAdapter; -import com.ninja.mobile.ui.views.wheel.transformer.FadingSelectionTransformer; -import com.ninja.mobile.ui.views.wheel.transformer.ScalingItemTransformer; -import com.ninja.mobile.ui.views.wheel.transformer.WheelItemTransformer; -import com.ninja.mobile.ui.views.wheel.transformer.WheelSelectionTransformer; -import com.ninja.mobile.utils.Utils; +import com.ninja.mobile.communicator.R; +import com.ninja.mobile.communicator.ui.views.wheel.adapter.WheelAdapter; +import com.ninja.mobile.communicator.ui.views.wheel.transformer.FadingSelectionTransformer; +import com.ninja.mobile.communicator.ui.views.wheel.transformer.ScalingItemTransformer; +import com.ninja.mobile.communicator.ui.views.wheel.transformer.WheelItemTransformer; +import com.ninja.mobile.communicator.ui.views.wheel.transformer.WheelSelectionTransformer; +import com.ninja.mobile.communicator.utils.Utils; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/ninja/mobile/ui/views/wheel/adapter/WheelAdapter.java b/app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/adapter/WheelAdapter.java similarity index 87% rename from app/src/main/java/com/ninja/mobile/ui/views/wheel/adapter/WheelAdapter.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/adapter/WheelAdapter.java index 354c9d5bc7f24cb92b883d8e33aef0a85f038d29..16873cc9d932c4de1171f22d75ff9a54dc4b09a9 100644 --- a/app/src/main/java/com/ninja/mobile/ui/views/wheel/adapter/WheelAdapter.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/adapter/WheelAdapter.java @@ -1,8 +1,8 @@ -package com.ninja.mobile.ui.views.wheel.adapter; +package com.ninja.mobile.communicator.ui.views.wheel.adapter; import android.graphics.drawable.Drawable; -import com.ninja.mobile.ui.views.wheel.WheelView; +import com.ninja.mobile.communicator.ui.views.wheel.WheelView; /** *

diff --git a/app/src/main/java/com/ninja/mobile/ui/views/wheel/adapter/WheelArrayAdapter.java b/app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/adapter/WheelArrayAdapter.java similarity index 85% rename from app/src/main/java/com/ninja/mobile/ui/views/wheel/adapter/WheelArrayAdapter.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/adapter/WheelArrayAdapter.java index acf622bcf23a501a6f3c2d9f7ca2625509aa7785..866496ed690a06f9968b120b525da199e4aa72ec 100644 --- a/app/src/main/java/com/ninja/mobile/ui/views/wheel/adapter/WheelArrayAdapter.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/adapter/WheelArrayAdapter.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.ui.views.wheel.adapter; +package com.ninja.mobile.communicator.ui.views.wheel.adapter; import java.util.List; diff --git a/app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/FadingSelectionTransformer.java b/app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/transformer/FadingSelectionTransformer.java similarity index 80% rename from app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/FadingSelectionTransformer.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/transformer/FadingSelectionTransformer.java index f352e4ed74eb4535bf60078f82a746aedb06d84f..f2fdcc78c9d3493ed8ddd6de5b86f5161cda484e 100644 --- a/app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/FadingSelectionTransformer.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/transformer/FadingSelectionTransformer.java @@ -1,8 +1,8 @@ -package com.ninja.mobile.ui.views.wheel.transformer; +package com.ninja.mobile.communicator.ui.views.wheel.transformer; import android.graphics.drawable.Drawable; -import com.ninja.mobile.ui.views.wheel.WheelView; +import com.ninja.mobile.communicator.ui.views.wheel.WheelView; public class FadingSelectionTransformer implements WheelSelectionTransformer { diff --git a/app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/ScalingItemTransformer.java b/app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/transformer/ScalingItemTransformer.java similarity index 77% rename from app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/ScalingItemTransformer.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/transformer/ScalingItemTransformer.java index 01189df7f5cdce17ea20efeca94d8bdbb16614b0..303b42637552fd7c04b011fe6503d53279250003 100644 --- a/app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/ScalingItemTransformer.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/transformer/ScalingItemTransformer.java @@ -1,9 +1,9 @@ -package com.ninja.mobile.ui.views.wheel.transformer; +package com.ninja.mobile.communicator.ui.views.wheel.transformer; import android.graphics.Rect; -import com.ninja.mobile.ui.views.wheel.Circle; -import com.ninja.mobile.ui.views.wheel.WheelView; +import com.ninja.mobile.communicator.ui.views.wheel.Circle; +import com.ninja.mobile.communicator.ui.views.wheel.WheelView; public class ScalingItemTransformer implements WheelItemTransformer { diff --git a/app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/SimpleItemTransformer.java b/app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/transformer/SimpleItemTransformer.java similarity index 72% rename from app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/SimpleItemTransformer.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/transformer/SimpleItemTransformer.java index 0f7440390c583f4ad41dbd38a6d908d457518283..2909e038cfc2016443eb6bd508a7f7850ceae7cd 100644 --- a/app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/SimpleItemTransformer.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/transformer/SimpleItemTransformer.java @@ -1,9 +1,9 @@ -package com.ninja.mobile.ui.views.wheel.transformer; +package com.ninja.mobile.communicator.ui.views.wheel.transformer; import android.graphics.Rect; -import com.ninja.mobile.ui.views.wheel.Circle; -import com.ninja.mobile.ui.views.wheel.WheelView; +import com.ninja.mobile.communicator.ui.views.wheel.Circle; +import com.ninja.mobile.communicator.ui.views.wheel.WheelView; public class SimpleItemTransformer implements WheelItemTransformer { diff --git a/app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/WheelItemTransformer.java b/app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/transformer/WheelItemTransformer.java similarity index 70% rename from app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/WheelItemTransformer.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/transformer/WheelItemTransformer.java index 47be16e626c829b114b5fda1e9a1bcd489e2d2c2..fa30cc93b1b289dbe0ef8fc2513b389aa4672cd5 100644 --- a/app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/WheelItemTransformer.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/transformer/WheelItemTransformer.java @@ -1,8 +1,8 @@ -package com.ninja.mobile.ui.views.wheel.transformer; +package com.ninja.mobile.communicator.ui.views.wheel.transformer; import android.graphics.Rect; -import com.ninja.mobile.ui.views.wheel.WheelView; +import com.ninja.mobile.communicator.ui.views.wheel.WheelView; public interface WheelItemTransformer { diff --git a/app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/WheelSelectionTransformer.java b/app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/transformer/WheelSelectionTransformer.java similarity index 55% rename from app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/WheelSelectionTransformer.java rename to app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/transformer/WheelSelectionTransformer.java index a63f67c9128b3c03412557bb8333aa9fe4a8a676..f92b6b4765e09e74bb09649450dc2399b48ee5d2 100644 --- a/app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/WheelSelectionTransformer.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/views/wheel/transformer/WheelSelectionTransformer.java @@ -1,8 +1,8 @@ -package com.ninja.mobile.ui.views.wheel.transformer; +package com.ninja.mobile.communicator.ui.views.wheel.transformer; import android.graphics.drawable.Drawable; -import com.ninja.mobile.ui.views.wheel.WheelView; +import com.ninja.mobile.communicator.ui.views.wheel.WheelView; public interface WheelSelectionTransformer { diff --git a/app/src/main/java/com/ninja/mobile/communicator/utils/ContactsUtil.java b/app/src/main/java/com/ninja/mobile/communicator/utils/ContactsUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..486d2d9173127b244c5df6a7173a7df8613ef4f4 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/utils/ContactsUtil.java @@ -0,0 +1,70 @@ +package com.ninja.mobile.communicator.utils; + +import android.content.Context; +import android.database.Cursor; +import android.provider.ContactsContract; + +import com.ninja.mobile.communicator.data.models.mqtt.Person; + +import java.util.ArrayList; +import java.util.List; + +public class ContactsUtil { + + public static List getContacts(Context ctx) { + List list = new ArrayList<>(); +// ContentResolver contentResolver = ctx.getContentResolver(); +// Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); +// if (cursor.getCount() > 0) { +// while (cursor.moveToNext()) { +// String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); +// if (cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)) > 0) { +// Cursor cursorInfo = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, +// ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]{id}, null); +// InputStream inputStream = ContactsContract.Contacts.openContactPhotoInputStream(ctx.getContentResolver(), +// ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long.valueOf(id))); +// +// Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long.valueOf(id)); +// Uri pURI = Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY); +// +// while (cursorInfo.moveToNext()) { +// Person info = new Person(); +// info.setName(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME))); +// +// info.setPhonelist(); +//// info.setMobileNumber(cursorInfo.getString(cursorInfo.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))); +// list.add(info); +// } +// +// cursorInfo.close(); +// } +// } +// } + Cursor phones = ctx.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); + if (phones!=null) { + while (phones.moveToNext()) { + String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); + String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); + addContact(list, name, phoneNumber); + } + phones.close(); + } + return list; + } + + + private static void addContact(List persons, String name, String phone){ + for (Person person:persons){ + if (person.name != null && person.name.equals(name)){ + person.phonelist.add(phone); + } else { + Person newPerson = new Person(); + newPerson.name = name; + List phones = new ArrayList<>(); + phones.add(phone); + newPerson.phonelist = phones; + } + } + + } +} diff --git a/app/src/main/java/com/ninja/mobile/utils/ImageUtils.java b/app/src/main/java/com/ninja/mobile/communicator/utils/ImageUtils.java similarity index 97% rename from app/src/main/java/com/ninja/mobile/utils/ImageUtils.java rename to app/src/main/java/com/ninja/mobile/communicator/utils/ImageUtils.java index 6872a07a513b36b54345f51e62d28be1344c6959..2637816a3c0e52f3e115337e423fac8ed7ae1c52 100644 --- a/app/src/main/java/com/ninja/mobile/utils/ImageUtils.java +++ b/app/src/main/java/com/ninja/mobile/communicator/utils/ImageUtils.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.utils; +package com.ninja.mobile.communicator.utils; /* * Created by Bo on 29.06.2017. diff --git a/app/src/main/java/com/ninja/mobile/utils/PhoneWatcher.java b/app/src/main/java/com/ninja/mobile/communicator/utils/PhoneWatcher.java similarity index 96% rename from app/src/main/java/com/ninja/mobile/utils/PhoneWatcher.java rename to app/src/main/java/com/ninja/mobile/communicator/utils/PhoneWatcher.java index fbd8770f89ef94f1584a4d3c84b07b60b7b77ab2..cbbdbeebd40455b256fd318faac89458b54e2621 100644 --- a/app/src/main/java/com/ninja/mobile/utils/PhoneWatcher.java +++ b/app/src/main/java/com/ninja/mobile/communicator/utils/PhoneWatcher.java @@ -1,9 +1,9 @@ -package com.ninja.mobile.utils; +package com.ninja.mobile.communicator.utils; import android.text.Editable; import android.text.TextWatcher; -import com.ninja.mobile.ui.views.HintEditText; +import com.ninja.mobile.communicator.ui.views.HintEditText; /** * Date: 25.06.17 diff --git a/app/src/main/java/com/ninja/mobile/utils/RealPathUtil.java b/app/src/main/java/com/ninja/mobile/communicator/utils/RealPathUtil.java similarity index 97% rename from app/src/main/java/com/ninja/mobile/utils/RealPathUtil.java rename to app/src/main/java/com/ninja/mobile/communicator/utils/RealPathUtil.java index 3ddf16297884c4761b963158b43f8b30cb07e4f1..6e2673a0ca2a64ef7a77c92d4d83536c0d238d5c 100644 --- a/app/src/main/java/com/ninja/mobile/utils/RealPathUtil.java +++ b/app/src/main/java/com/ninja/mobile/communicator/utils/RealPathUtil.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.utils; +package com.ninja.mobile.communicator.utils; /** * Created by dmitro.boiko on 30/06/2017. diff --git a/app/src/main/java/com/ninja/mobile/utils/SmsBroadcastReceiver.java b/app/src/main/java/com/ninja/mobile/communicator/utils/SmsBroadcastReceiver.java similarity index 96% rename from app/src/main/java/com/ninja/mobile/utils/SmsBroadcastReceiver.java rename to app/src/main/java/com/ninja/mobile/communicator/utils/SmsBroadcastReceiver.java index c24191477f41a376d851f667a3dfe46ec39b8959..3c8b42a886771af281de7a6ba406be873a54651c 100644 --- a/app/src/main/java/com/ninja/mobile/utils/SmsBroadcastReceiver.java +++ b/app/src/main/java/com/ninja/mobile/communicator/utils/SmsBroadcastReceiver.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.utils; +package com.ninja.mobile.communicator.utils; import android.content.BroadcastReceiver; import android.content.Context; diff --git a/app/src/main/java/com/ninja/mobile/utils/SpannableUtils.java b/app/src/main/java/com/ninja/mobile/communicator/utils/SpannableUtils.java similarity index 94% rename from app/src/main/java/com/ninja/mobile/utils/SpannableUtils.java rename to app/src/main/java/com/ninja/mobile/communicator/utils/SpannableUtils.java index 8192f4d7431a8f1abaff2603732efc40e3e556db..cf056d4e1797ef2a5f2a1d2da471b95fd937ee79 100644 --- a/app/src/main/java/com/ninja/mobile/utils/SpannableUtils.java +++ b/app/src/main/java/com/ninja/mobile/communicator/utils/SpannableUtils.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.utils; +package com.ninja.mobile.communicator.utils; import android.content.Context; import android.text.Spannable; @@ -10,7 +10,7 @@ import android.text.style.ForegroundColorSpan; import android.view.View; import android.widget.TextView; -import com.ninja.mobile.R; +import com.ninja.mobile.communicator.R; public class SpannableUtils { private static final int LINK_COLOR = R.color.link_highlight; diff --git a/app/src/main/java/com/ninja/mobile/utils/StringUtils.java b/app/src/main/java/com/ninja/mobile/communicator/utils/StringUtils.java similarity index 90% rename from app/src/main/java/com/ninja/mobile/utils/StringUtils.java rename to app/src/main/java/com/ninja/mobile/communicator/utils/StringUtils.java index 24773ccb4844200b66d8d0e3533d8f242a9fbee7..9ce99335e0a719b2624d97bfa2ce48dc2e246b9e 100644 --- a/app/src/main/java/com/ninja/mobile/utils/StringUtils.java +++ b/app/src/main/java/com/ninja/mobile/communicator/utils/StringUtils.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.utils; +package com.ninja.mobile.communicator.utils; /* * Created by Bo on 29.06.2017. diff --git a/app/src/main/java/com/ninja/mobile/utils/Utils.java b/app/src/main/java/com/ninja/mobile/communicator/utils/Utils.java similarity index 95% rename from app/src/main/java/com/ninja/mobile/utils/Utils.java rename to app/src/main/java/com/ninja/mobile/communicator/utils/Utils.java index c78d778ed48e61f59911be234244914bc333d1ea..2133d9e3da782c3fc7b8d80f1075f79a759a25cf 100644 --- a/app/src/main/java/com/ninja/mobile/utils/Utils.java +++ b/app/src/main/java/com/ninja/mobile/communicator/utils/Utils.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.utils; +package com.ninja.mobile.communicator.utils; import android.content.res.Resources; diff --git a/app/src/main/java/com/ninja/mobile/utils/ValidationUtils.java b/app/src/main/java/com/ninja/mobile/communicator/utils/ValidationUtils.java similarity index 67% rename from app/src/main/java/com/ninja/mobile/utils/ValidationUtils.java rename to app/src/main/java/com/ninja/mobile/communicator/utils/ValidationUtils.java index bde78378674d11922d7317b7e5eb188a471cc0e7..698f164584f78b5d2fecb3269f726e4531248340 100644 --- a/app/src/main/java/com/ninja/mobile/utils/ValidationUtils.java +++ b/app/src/main/java/com/ninja/mobile/communicator/utils/ValidationUtils.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.utils; +package com.ninja.mobile.communicator.utils; import android.util.Patterns; @@ -17,8 +17,11 @@ public class ValidationUtils { return email != null && Patterns.EMAIL_ADDRESS.matcher(email).matches(); } - public static boolean isNameVaild(String data) { + public static boolean isNameValid(String data) { return StringUtils.isNotEmpty(data) && data.length() > 2; } + public static boolean isCodeValid(String code) { + return StringUtils.isNotEmpty(code) && code.length() == 6; + } } diff --git a/app/src/main/java/com/ninja/mobile/utils/ZxingEncoder.java b/app/src/main/java/com/ninja/mobile/communicator/utils/ZxingEncoder.java similarity index 99% rename from app/src/main/java/com/ninja/mobile/utils/ZxingEncoder.java rename to app/src/main/java/com/ninja/mobile/communicator/utils/ZxingEncoder.java index 8fd0dcd07945e747427fed5040557c41f6eabcf5..4f7826f79c0f9144b4bbcaded7bc1f7090114396 100644 --- a/app/src/main/java/com/ninja/mobile/utils/ZxingEncoder.java +++ b/app/src/main/java/com/ninja/mobile/communicator/utils/ZxingEncoder.java @@ -1,4 +1,4 @@ -package com.ninja.mobile.utils; +package com.ninja.mobile.communicator.utils; import android.graphics.Bitmap; import android.graphics.Color; diff --git a/app/src/main/java/com/ninja/mobile/data/DataManager.java b/app/src/main/java/com/ninja/mobile/data/DataManager.java deleted file mode 100644 index e5d5ad30496dfb36c12687a583b0de9978584a01..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/ninja/mobile/data/DataManager.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.ninja.mobile.data; - -import android.content.Context; - -import com.ninja.mobile.injection.ApplicationContext; -import com.ninja.mobile.intetfaces.APIManager; - -import javax.inject.Inject; -import javax.inject.Singleton; - -/** - * Created by Max Chervatiuk on 22.06.17. - * Email: duo.blood@gmail.com - */ - -@Singleton -public class DataManager { - //// TODO: 22.06.17 Implement class - - private final Context mContext; - private APIManager dataBaseManager; - private APIManager apiManager; - - private final RxBus mBus; - - @Inject - public DataManager(@ApplicationContext Context context, RxBus bus) { - mContext = context; - mBus = bus; - } - - public RxBus getBus() { - return mBus; - } - - public CountryHelper getCountryHelper() { - CountryHelper helper = new CountryHelper(); - helper.parseCountries(mContext); - return helper; - } -} diff --git a/app/src/main/java/com/ninja/mobile/data/models/events/Data.java b/app/src/main/java/com/ninja/mobile/data/models/events/Data.java deleted file mode 100644 index edfe565aebad7ae95b3a43c086725b22f4122d49..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/ninja/mobile/data/models/events/Data.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.ninja.mobile.data.models.events; - -/** - * Date: 05.07.17 - * Time: 02:58 - * - * @author Max Chervatiuk - * Email: duo.blood@gmail.com - */ - -public abstract class Data { - - private Event mEvent; - - Data(Event event) { - mEvent = event; - } - - public Event getEvent() { - return mEvent; - } - - public abstract T getData(); -} diff --git a/app/src/main/java/com/ninja/mobile/data/models/events/Event.java b/app/src/main/java/com/ninja/mobile/data/models/events/Event.java deleted file mode 100644 index 1012ad82a748c8f44a6539661d29bba27f8554b9..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/ninja/mobile/data/models/events/Event.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.ninja.mobile.data.models.events; - -/** - * Date: 05.07.17 - * Time: 02:50 - * - * @author Max Chervatiuk - * Email: duo.blood@gmail.com - */ - -public enum Event { - MSG, - POST, - SUBSCRIBE, - TECHNICAL -} diff --git a/app/src/main/java/com/ninja/mobile/data/models/mqtt/Io.java b/app/src/main/java/com/ninja/mobile/data/models/mqtt/Io.java deleted file mode 100644 index 136bbfea7219a9c742e5691e9c42fad9d450786d..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/ninja/mobile/data/models/mqtt/Io.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.ninja.mobile.data.models.mqtt; - - -import com.ninja.mobile.data.server.bert.BertTuple; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by dmitro.boiko on 04/07/2017. - */ - -public class Io extends BaseModelMQQT{ - - public Object code; - public Object data; - - public Io() { - } - - @Override public Io decode(BertTuple bertTuple) { - this.code = bertTuple.get(0); - this.data = bertTuple.get(1); - return this; - } - - @Override public List encode() { - return new ArrayList(){ - { - add(name); - add(code); - add(data); - } - }; - } -} diff --git a/app/src/main/java/com/ninja/mobile/data/models/mqtt/Person.java b/app/src/main/java/com/ninja/mobile/data/models/mqtt/Person.java deleted file mode 100644 index ecaf808e4c804e7d96bac8b78c5a0de160f9eee0..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/ninja/mobile/data/models/mqtt/Person.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.ninja.mobile.data.models.mqtt; - -import com.ninja.mobile.data.server.bert.BertTuple; - -import java.util.List; - -public class Person extends BaseModelMQQT{ - - public long id; - public String name; - public String surname; - public String username; - public List phonelist; - public String alias; - - public Person() { - } - - @Override public Person decode(BertTuple bertTuple) { - return null; - } - - @Override public Object encode() { - return null; - } -} diff --git a/app/src/main/java/com/ninja/mobile/data/server/Topics.java b/app/src/main/java/com/ninja/mobile/data/server/Topics.java deleted file mode 100644 index 8534c7bc2f3bfc33ec7c687557fbfa609bd54fe4..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/ninja/mobile/data/server/Topics.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.ninja.mobile.data.server; - -import java.util.Locale; -import java.util.Random; - -class Topics { - private static String AUTH_TOPIC = "events/%d/api/anon/ClientId/Token"; // 2 stands for from 1 to vnode max - - public static String getAuthTopic(int node) { - int nextInt = new Random().nextInt(node); - return String.format(Locale.getDefault(), AUTH_TOPIC, nextInt + 1); - } -} diff --git a/app/src/main/java/com/ninja/mobile/mvp/presenters/SplashPresenter.java b/app/src/main/java/com/ninja/mobile/mvp/presenters/SplashPresenter.java deleted file mode 100644 index b91f7a8391e272d8f3533fe193162e2a1013c911..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/ninja/mobile/mvp/presenters/SplashPresenter.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.ninja.mobile.mvp.presenters; - -import com.arellomobile.mvp.InjectViewState; -import com.ninja.mobile.mvp.view.SplashView; - -/** - * Created by Max Chervatiuk on 25.06.17. - * Email: duo.blood@gmail.com - */ -@InjectViewState -public class SplashPresenter extends BasePresenter { -} diff --git a/app/src/main/java/com/ninja/mobile/ui/activities/MainActivity.java b/app/src/main/java/com/ninja/mobile/ui/activities/MainActivity.java deleted file mode 100644 index 0f913520b7bff68fdaa6dafffca2825f0c4ec819..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/ninja/mobile/ui/activities/MainActivity.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.ninja.mobile.ui.activities; - -import android.os.Bundle; - -import com.ninja.mobile.R; -import com.ninja.mobile.ui.base.BaseActivity; - -public class MainActivity extends BaseActivity { - - @Override protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - } - -} diff --git a/app/src/main/java/com/ninja/mobile/ui/activities/RegistrationActivity.java b/app/src/main/java/com/ninja/mobile/ui/activities/RegistrationActivity.java deleted file mode 100644 index f6d7e9c16216b959ec8ecf39e3d8f05a0ef39d28..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/ninja/mobile/ui/activities/RegistrationActivity.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.ninja.mobile.ui.activities; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; - -import com.ninja.mobile.R; -import com.ninja.mobile.ui.base.BaseActivity; - -public class RegistrationActivity extends BaseActivity { - - public static Intent getLaunchRegistrationActivity(Context context) { - return new Intent(context, RegistrationActivity.class); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_registration); - } -} diff --git a/app/src/main/java/com/ninja/mobile/ui/activities/SplashActivity.java b/app/src/main/java/com/ninja/mobile/ui/activities/SplashActivity.java deleted file mode 100644 index c0fbd4d75edddb1be20163f24f82f47de5624b6c..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/ninja/mobile/ui/activities/SplashActivity.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.ninja.mobile.ui.activities; - -import android.content.Intent; -import android.os.Bundle; -import android.os.Handler; -import android.support.annotation.Nullable; - -import com.ninja.mobile.R; -import com.ninja.mobile.data.server.PahoService; -import com.ninja.mobile.ui.base.BaseActivity; - -/** - * Created by Max Chervatiuk on 22.06.17. - * Email: duo.blood@gmail.com - */ - -public class SplashActivity extends BaseActivity { - - @Override protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_splash); - new Handler().postDelayed(() -> { - startServerService(); - startActivity(new Intent(SplashActivity.this, WelcomeActivity.class)); - }, 2000); - } - - private void startServerService() { - this.startService(PahoService.newInstance(this)); - } -} diff --git a/app/src/main/java/com/ninja/mobile/ui/fragments/signin/CodeInputFragment.java b/app/src/main/java/com/ninja/mobile/ui/fragments/signin/CodeInputFragment.java deleted file mode 100644 index bea781c8c6001782795b1bb8e7e4c3cffab6cb3b..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/ninja/mobile/ui/fragments/signin/CodeInputFragment.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.ninja.mobile.ui.fragments.signin; - -import android.os.Bundle; -import android.support.annotation.Nullable; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; -import android.widget.Toast; - -import com.ninja.mobile.R; -import com.ninja.mobile.ui.base.BaseFragment; -import com.ninja.mobile.utils.SpannableUtils; - -import butterknife.BindView; - -/** - * Created by Max Chervatiuk on 23.06.17. - * Email: duo.blood@gmail.com - */ - -public class CodeInputFragment extends BaseFragment { - @BindView(R.id.f_code_tv_repeat) TextView haventReceived; - - @Nullable @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - return inflater.inflate(R.layout.fragment_input_code, container, false); - } - - @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - initSpannableTerms(); - } - - private void initSpannableTerms() { - View.OnClickListener onClickListener = v -> Toast.makeText(getActivity(), "It is not working now :-(", Toast.LENGTH_SHORT).show(); - SpannableUtils.setSpannable(getActivity(), haventReceived, R.string.signin_text_have_not_received, R.string.signin_text_have_not_received, onClickListener); - } -} diff --git a/app/src/main/res/drawable/rec_circle.xml b/app/src/main/res/drawable/rec_circle.xml new file mode 100644 index 0000000000000000000000000000000000000000..e0d92ace3d3cb19a4e3392f5d27eaac58a627c44 --- /dev/null +++ b/app/src/main/res/drawable/rec_circle.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/red_round_button.xml b/app/src/main/res/drawable/red_round_button.xml new file mode 100644 index 0000000000000000000000000000000000000000..95abf0d0285e0a85ad911e16629f284e5aeb7fc1 --- /dev/null +++ b/app/src/main/res/drawable/red_round_button.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 9d71988b727c9ce3982fa3150cff813bd3140cb8..044e9fe471421d1faecef9ca68a6c9d222b7f7be 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -5,7 +5,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context="com.ninja.mobile.ui.activities.MainActivity"> + tools:context="com.ninja.mobile.communicator.ui.activities.MainActivity"> + tools:context="com.ninja.mobile.communicator.ui.activities.RegistrationActivity"> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_welcome.xml b/app/src/main/res/layout/activity_welcome.xml index 97410d329a449c4c78c25ff71ccac18956bbf566..dad4908f11541316f6a6000630004832ffb30fcf 100644 --- a/app/src/main/res/layout/activity_welcome.xml +++ b/app/src/main/res/layout/activity_welcome.xml @@ -5,14 +5,14 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context="com.ninja.mobile.ui.activities.WelcomeActivity"> + tools:context="com.ninja.mobile.communicator.ui.activities.WelcomeActivity"> - + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_input_code.xml b/app/src/main/res/layout/fragment_input_code.xml index 4f5a7e6d18514702aa44f56fea3064992d3af2e7..0344a9ec920d0c54c0024652adc601e19dd79c62 100644 --- a/app/src/main/res/layout/fragment_input_code.xml +++ b/app/src/main/res/layout/fragment_input_code.xml @@ -1,10 +1,10 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:ignore="ContentDescription"> + app:srcCompat="@drawable/logo" /> + app:srcCompat="@drawable/v_phone" /> + app:layout_constraintTop_toBottomOf="@+id/f_code_view_1" /> + app:srcCompat="@drawable/v_lock" /> + app:layout_constraintTop_toBottomOf="@+id/f_code_img_logo" /> + tools:text="+380 50 500 5050" /> - + + app:layout_constraintTop_toTopOf="@+id/f_code_img_lock" + app:layout_constraintVertical_bias="0.0" + app:layout_constraintWidth_default="spread" + app:layout_constraintLeft_toLeftOf="@+id/f_code_guideline_left" /> + app:layout_constraintTop_toBottomOf="@+id/f_code_view_2" /> + app:layout_constraintTop_toBottomOf="@+id/f_code_tv_sent" /> + app:layout_constraintGuide_percent="0.1" /> + app:layout_constraintGuide_percent="0.9" /> + app:srcCompat="@drawable/v_navigate_next_red_24dp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_input_phone.xml b/app/src/main/res/layout/fragment_input_phone.xml index 7807f5af9c480e20841e9996f6670f84a60fdd04..aded8c96863b142bf60de1e0961bce521d0cb127 100644 --- a/app/src/main/res/layout/fragment_input_phone.xml +++ b/app/src/main/res/layout/fragment_input_phone.xml @@ -119,7 +119,7 @@ app:layout_constraintVertical_bias="0.5" tools:text="1237"/> - - + + + + + + + + + + + + + + + +