From 6f247e52d3c9479288e806bf75c8be13a0a82639 Mon Sep 17 00:00:00 2001 From: DJ_Kovrik Date: Wed, 6 Nov 2019 21:27:45 +0300 Subject: [PATCH 1/7] Add persistenceCookieJar --- app/build.gradle | 3 ++- buildsystem/dependencies.gradle | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 1bb693cd..6630e297 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -115,6 +115,7 @@ dependencies { implementation presentationDependencies.retrofitJspoonConverter implementation presentationDependencies.okhttp implementation presentationDependencies.okhttpInterceptor + implementation presentationDependencies.cookies implementation presentationDependencies.picasso implementation presentationDependencies.glide implementation presentationDependencies.glideOkHttp3 @@ -156,4 +157,4 @@ configurations.all() { resolutionStrategy.force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" } -apply plugin: 'com.google.gms.google-services' \ No newline at end of file +apply plugin: 'com.google.gms.google-services' diff --git a/buildsystem/dependencies.gradle b/buildsystem/dependencies.gradle index 323da172..8705bc00 100644 --- a/buildsystem/dependencies.gradle +++ b/buildsystem/dependencies.gradle @@ -32,6 +32,7 @@ ext { final JSPOON_VERSION = "1.3.2" final OKHTTP_VERSION = "3.13.1" final GSON_VERSION = "2.8.5" + final COOKIE_JAR_VERSION = "v1.0.1" // UI final MATERIAL_VALUES_VERSION = "1.1.1" @@ -120,6 +121,8 @@ ext { recyclerView : "androidx.recyclerview:recyclerview:$RECYCLERVIEW_VERSION", constraintLayout : "androidx.constraintlayout:constraintlayout:$CONSTRAINT_LAYOUT_VERSION", + cookies : "com.github.franmontiel:PersistentCookieJar:$COOKIE_JAR_VERSION", + dagger : "com.google.dagger:dagger:$DAGGER_VERSION", daggerCompiler : "com.google.dagger:dagger-compiler:$DAGGER_VERSION", daggerAndroid : "com.google.dagger:dagger-android:$DAGGER_VERSION", From bcb09ea061a02dcba9994542cad56c780992e7ea Mon Sep 17 00:00:00 2001 From: DJ_Kovrik Date: Wed, 6 Nov 2019 21:28:13 +0300 Subject: [PATCH 2/7] Define new api --- .../yaptalker/data/network/site/YapApi.kt | 15 +++++++++++ .../data/network/site/model/FeedResult.kt | 14 ++++++++++ .../data/network/site/model/GlobalParam.kt | 14 ++++++++++ .../data/network/site/model/UserSmall.kt | 26 +++++++++++++++++++ 4 files changed, 69 insertions(+) create mode 100644 data/src/main/java/com/sedsoftware/yaptalker/data/network/site/YapApi.kt create mode 100644 data/src/main/java/com/sedsoftware/yaptalker/data/network/site/model/FeedResult.kt create mode 100644 data/src/main/java/com/sedsoftware/yaptalker/data/network/site/model/GlobalParam.kt create mode 100644 data/src/main/java/com/sedsoftware/yaptalker/data/network/site/model/UserSmall.kt diff --git a/data/src/main/java/com/sedsoftware/yaptalker/data/network/site/YapApi.kt b/data/src/main/java/com/sedsoftware/yaptalker/data/network/site/YapApi.kt new file mode 100644 index 00000000..7c392e0d --- /dev/null +++ b/data/src/main/java/com/sedsoftware/yaptalker/data/network/site/YapApi.kt @@ -0,0 +1,15 @@ +package com.sedsoftware.yaptalker.data.network.site + +import com.sedsoftware.yaptalker.data.network.site.model.FeedResult +import io.reactivex.Single +import retrofit2.http.GET +import retrofit2.http.Query + +interface YapApi { + + @GET("action/login") + fun authUser( + @Query("name") name: String, + @Query("password") password: String + ): Single +} diff --git a/data/src/main/java/com/sedsoftware/yaptalker/data/network/site/model/FeedResult.kt b/data/src/main/java/com/sedsoftware/yaptalker/data/network/site/model/FeedResult.kt new file mode 100644 index 00000000..bd8f5ab6 --- /dev/null +++ b/data/src/main/java/com/sedsoftware/yaptalker/data/network/site/model/FeedResult.kt @@ -0,0 +1,14 @@ +package com.sedsoftware.yaptalker.data.network.site.model + +import com.google.gson.annotations.SerializedName + +data class FeedResult( + @SerializedName("code") + var code: Int? = null, + @SerializedName("global") + var global: GlobalParam? = null, + @SerializedName("offset") + var offset: String? = null, + @SerializedName("user") + var user: UserSmall? = null +) diff --git a/data/src/main/java/com/sedsoftware/yaptalker/data/network/site/model/GlobalParam.kt b/data/src/main/java/com/sedsoftware/yaptalker/data/network/site/model/GlobalParam.kt new file mode 100644 index 00000000..9a04c356 --- /dev/null +++ b/data/src/main/java/com/sedsoftware/yaptalker/data/network/site/model/GlobalParam.kt @@ -0,0 +1,14 @@ +package com.sedsoftware.yaptalker.data.network.site.model + +import com.google.gson.annotations.SerializedName + +data class GlobalParam( + @SerializedName("api_version") + var apiVersion: String? = null, + @SerializedName("app_version") + var appVersion: String? = null, + @SerializedName("generation_time") + var generationTime: Double? = null, + @SerializedName("server_time") + var serverTime: String? = null +) diff --git a/data/src/main/java/com/sedsoftware/yaptalker/data/network/site/model/UserSmall.kt b/data/src/main/java/com/sedsoftware/yaptalker/data/network/site/model/UserSmall.kt new file mode 100644 index 00000000..1586fbcb --- /dev/null +++ b/data/src/main/java/com/sedsoftware/yaptalker/data/network/site/model/UserSmall.kt @@ -0,0 +1,26 @@ +package com.sedsoftware.yaptalker.data.network.site.model + +import com.google.gson.annotations.SerializedName + +data class UserSmall( + @SerializedName("avatar_res") + var avatarRes: String? = null, + @SerializedName("avatar_type") + var avatarType: String? = null, + @SerializedName("avatar_url") + var avatarUrl: String? = null, + @SerializedName("id") + var id: String? = null, + @SerializedName("name") + var name: String? = null, + @SerializedName("new_mails") + var newMails: String? = null, + @SerializedName("rank") + var rank: Int? = null, + @SerializedName("read_only") + var readOnly: Int? = null, + @SerializedName("SID") + var sid: String? = null, + @SerializedName("validated") + var validated: String? = null +) From d21b9460deb0dbfd95fcf71a7658c9315db119a2 Mon Sep 17 00:00:00 2001 From: DJ_Kovrik Date: Wed, 6 Nov 2019 21:28:29 +0300 Subject: [PATCH 3/7] Auth utils --- .../com/sedsoftware/yaptalker/YapTalkerApp.kt | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/app/src/main/java/com/sedsoftware/yaptalker/YapTalkerApp.kt b/app/src/main/java/com/sedsoftware/yaptalker/YapTalkerApp.kt index f584a4b6..79ff814c 100644 --- a/app/src/main/java/com/sedsoftware/yaptalker/YapTalkerApp.kt +++ b/app/src/main/java/com/sedsoftware/yaptalker/YapTalkerApp.kt @@ -6,6 +6,7 @@ import android.content.Context import android.graphics.Color import android.graphics.drawable.Drawable import android.net.Uri +import android.provider.Settings import android.widget.ImageView import com.facebook.stetho.Stetho import com.mikepenz.community_material_typeface_library.CommunityMaterial @@ -22,6 +23,7 @@ import dagger.android.HasActivityInjector import ru.noties.markwon.SpannableConfiguration import ru.noties.markwon.spans.SpannableTheme import timber.log.Timber +import java.security.MessageDigest import javax.inject.Inject @Suppress("ConstantConditionIf") @@ -29,8 +31,36 @@ class YapTalkerApp : Application(), HasActivityInjector { companion object { private const val NAV_DRAWER_AVATAR_PADDING = 16 + private const val YAP_API_KEY = "JanW23Sh" + + private lateinit var appContext: Context + + fun getMd5(): String = + md5(String.format("%s:%s", YAP_API_KEY, getUdid())) + + fun getUdid(): String = + Settings.System.getString(appContext.contentResolver, "android_id") + + fun getAppVersion(): String = "0.998" + + private fun md5(str: String): String { + val digest = MessageDigest.getInstance("MD5") + digest.update(str.toByteArray()) + val messageDigest = digest.digest() + val hexString = StringBuffer() + + for (i in 0 until messageDigest.size) { + var hex = Integer.toHexString(0xFF and messageDigest[i].toInt()) + while (hex.length < 2) + hex = "0$hex" + hexString.append(hex) + } + return hexString.toString() + } } + + @Inject lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector @@ -41,6 +71,8 @@ class YapTalkerApp : Application(), HasActivityInjector { return } + appContext = this + LeakCanary.install(this) DaggerAppComponent.builder().create(this).inject(this) From a28fea06c081d51108819f3ae04210c8c668cc10 Mon Sep 17 00:00:00 2001 From: DJ_Kovrik Date: Wed, 6 Nov 2019 21:28:46 +0300 Subject: [PATCH 4/7] Networking --- .../yaptalker/di/module/NetworkModule.kt | 14 +++++ .../di/module/network/HttpClientsModule.kt | 38 +++++++++++- .../interceptors/CustomHeadersInterceptor.kt | 29 ---------- .../HeaderAndParamManipulationInterceptor.kt | 58 +++++++++++++++++++ 4 files changed, 108 insertions(+), 31 deletions(-) delete mode 100644 app/src/main/java/com/sedsoftware/yaptalker/di/module/network/interceptors/CustomHeadersInterceptor.kt create mode 100644 app/src/main/java/com/sedsoftware/yaptalker/di/module/network/interceptors/HeaderAndParamManipulationInterceptor.kt diff --git a/app/src/main/java/com/sedsoftware/yaptalker/di/module/NetworkModule.kt b/app/src/main/java/com/sedsoftware/yaptalker/di/module/NetworkModule.kt index fb2f7aec..45b0d319 100644 --- a/app/src/main/java/com/sedsoftware/yaptalker/di/module/NetworkModule.kt +++ b/app/src/main/java/com/sedsoftware/yaptalker/di/module/NetworkModule.kt @@ -4,6 +4,7 @@ import com.sedsoftware.yaptalker.common.converter.HashSearchConverterFactory import com.sedsoftware.yaptalker.common.converter.VideoTokenConverterFactory import com.sedsoftware.yaptalker.data.network.external.AppUpdatesChecker import com.sedsoftware.yaptalker.data.network.external.GitHubLoader +import com.sedsoftware.yaptalker.data.network.site.YapApi import com.sedsoftware.yaptalker.data.network.site.YapLoader import com.sedsoftware.yaptalker.data.network.site.YapSearchIdLoader import com.sedsoftware.yaptalker.data.network.site.YapVideoTokenLoader @@ -37,6 +38,7 @@ class NetworkModule { private const val YAP_FILES_BASE_URL = "http://www.yapfiles.ru/" private const val YAP_API_BASE_URL = "http://api.yapfiles.ru/" private const val VK_API_BASE_URL = "https://api.vk.com/" + private const val YAP_API_BASE_URL_NEW = "https://api.yaplakal.com/" // Misc private const val YAP_FILE_HASH_MARKER = "md5=" @@ -65,6 +67,18 @@ class NetworkModule { .build() .create(YapLoader::class.java) + @Singleton + @Provides + fun provideYapApi(@Named("apiClient") okHttpClient: OkHttpClient): YapApi = + Retrofit.Builder() + .baseUrl(YAP_API_BASE_URL_NEW) + .client(okHttpClient) + .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) + .addConverterFactory(GsonConverterFactory.create()) + .addConverterFactory(ScalarsConverterFactory.create()) + .build() + .create(YapApi::class.java) + @Singleton @Provides fun provideYapSearchIdLoader(@Named("siteClient") okHttpClient: OkHttpClient): YapSearchIdLoader = diff --git a/app/src/main/java/com/sedsoftware/yaptalker/di/module/network/HttpClientsModule.kt b/app/src/main/java/com/sedsoftware/yaptalker/di/module/network/HttpClientsModule.kt index d643441b..8a2f2d09 100644 --- a/app/src/main/java/com/sedsoftware/yaptalker/di/module/network/HttpClientsModule.kt +++ b/app/src/main/java/com/sedsoftware/yaptalker/di/module/network/HttpClientsModule.kt @@ -1,7 +1,11 @@ package com.sedsoftware.yaptalker.di.module.network +import android.content.Context +import com.franmontiel.persistentcookiejar.PersistentCookieJar +import com.franmontiel.persistentcookiejar.cache.SetCookieCache +import com.franmontiel.persistentcookiejar.persistence.SharedPrefsCookiePersistor import com.sedsoftware.yaptalker.BuildConfig -import com.sedsoftware.yaptalker.di.module.network.interceptors.CustomHeadersInterceptor +import com.sedsoftware.yaptalker.di.module.network.interceptors.HeaderAndParamManipulationInterceptor import com.sedsoftware.yaptalker.di.module.network.interceptors.HtmlFixerInterceptor import com.sedsoftware.yaptalker.di.module.network.interceptors.SaveReceivedCookiesInterceptor import com.sedsoftware.yaptalker.di.module.network.interceptors.SendSavedCookiesInterceptor @@ -26,18 +30,48 @@ class HttpClientsModule { HttpLoggingInterceptor().setLevel(loggingLevel) } + @Provides + @Singleton + fun provideSetCookieCache(): SetCookieCache = + SetCookieCache() + + @Provides + @Singleton + fun provideSharedPrefsCookiePersistor(context: Context): SharedPrefsCookiePersistor = + SharedPrefsCookiePersistor(context) + + @Provides + @Singleton + fun providePersistentCookieJar( + cache: SetCookieCache, + persistor: SharedPrefsCookiePersistor + ): PersistentCookieJar = + PersistentCookieJar(cache, persistor) + @Singleton @Provides @Named("siteClient") fun provideSiteClient(cookieStorage: CookieStorage): OkHttpClient = OkHttpClient.Builder() .addInterceptor(HtmlFixerInterceptor()) - .addInterceptor(CustomHeadersInterceptor()) + .addInterceptor(HeaderAndParamManipulationInterceptor()) .addInterceptor(SaveReceivedCookiesInterceptor(cookieStorage)) .addInterceptor(SendSavedCookiesInterceptor(cookieStorage)) .addInterceptor(loggingInterceptor) .build() + @Singleton + @Provides + @Named("apiClient") + fun provideApiClient(jar: PersistentCookieJar): OkHttpClient { + val builder = OkHttpClient.Builder() + builder.addInterceptor(HeaderAndParamManipulationInterceptor()) + builder.addInterceptor(loggingInterceptor) + builder.cookieJar(jar) + builder.cache(null) + return builder.build() + } + @Singleton @Provides @Named("fileClient") diff --git a/app/src/main/java/com/sedsoftware/yaptalker/di/module/network/interceptors/CustomHeadersInterceptor.kt b/app/src/main/java/com/sedsoftware/yaptalker/di/module/network/interceptors/CustomHeadersInterceptor.kt deleted file mode 100644 index f5bed534..00000000 --- a/app/src/main/java/com/sedsoftware/yaptalker/di/module/network/interceptors/CustomHeadersInterceptor.kt +++ /dev/null @@ -1,29 +0,0 @@ -package com.sedsoftware.yaptalker.di.module.network.interceptors - -import okhttp3.Interceptor -import okhttp3.Interceptor.Chain -import okhttp3.Response - -class CustomHeadersInterceptor : Interceptor { - - companion object { - private val headers = mapOf( - "Accept" to "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", - "Accept-Language" to "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3", - "Connection" to "keep-alive", -// "Host" to "www.yaplakal.com", - "Referer" to "http://www.yaplakal.com/", - "User-Agent" to "YapTalker" - ) - } - - override fun intercept(chain: Chain): Response { - val builder = chain.request().newBuilder() - - headers.forEach { (parameter, value) -> - builder.addHeader(parameter, value) - } - - return chain.proceed(builder.build()) - } -} diff --git a/app/src/main/java/com/sedsoftware/yaptalker/di/module/network/interceptors/HeaderAndParamManipulationInterceptor.kt b/app/src/main/java/com/sedsoftware/yaptalker/di/module/network/interceptors/HeaderAndParamManipulationInterceptor.kt new file mode 100644 index 00000000..71d99ecb --- /dev/null +++ b/app/src/main/java/com/sedsoftware/yaptalker/di/module/network/interceptors/HeaderAndParamManipulationInterceptor.kt @@ -0,0 +1,58 @@ +package com.sedsoftware.yaptalker.di.module.network.interceptors + +import android.os.Build +import android.os.Build.VERSION +import com.sedsoftware.yaptalker.YapTalkerApp +import okhttp3.Interceptor +import okhttp3.Interceptor.Chain +import okhttp3.Request +import okhttp3.Response +import java.io.IOException + + +class HeaderAndParamManipulationInterceptor : Interceptor { + + @Throws(IOException::class) + override fun intercept(chain: Chain): Response { + var request: Request + val request2 = chain.request() + val newBuilder = request2.url().newBuilder() + val str = "md5" + if (request2.url().queryParameter(str) == null) { + newBuilder.addQueryParameter(str, YapTalkerApp.getMd5()) + } + val str2 = "appVersion" + if (request2.url().queryParameter(str2) == null) { + newBuilder.addQueryParameter(str2, YapTalkerApp.getAppVersion()) + } + val str3 = "type" + if (request2.url().queryParameter(str3) == null) { + newBuilder.addQueryParameter(str3, "json") + } + val str4 = "Connection" + if (request2.header(str4) == null) { + request = request2.newBuilder().addHeader(str4, "keep-alive").url(newBuilder.build()).build() + } else { + request = request2.newBuilder().url(newBuilder.build()).build() + } + val str5 = "User-Agent" + if (request.header(str5) == null) { + val sb = StringBuilder() + sb.append("Yaplakal/0.998 (Android ") + sb.append(VERSION.RELEASE) + sb.append("; ") + sb.append(Build.MANUFACTURER) + val str6 = "," + sb.append(str6) + sb.append(Build.MODEL) + sb.append(str6) + sb.append(VERSION.SDK_INT) + sb.append(")") + request = request.newBuilder().addHeader(str5, sb.toString()).url(newBuilder.build()).build() + } + val str7 = "http-udid" + return if (request.header(str7) != null) { + chain.proceed(request) + } else chain.proceed(request.newBuilder().header(str7, YapTalkerApp.getUdid()).build()) + } +} From c32f15771193a7c742d6b98c29e2d9e4e69a0e5d Mon Sep 17 00:00:00 2001 From: DJ_Kovrik Date: Wed, 6 Nov 2019 21:28:53 +0300 Subject: [PATCH 5/7] Logic --- .../authorization/AuthorizationFragment.kt | 5 ++--- .../authorization/AuthorizationPresenter.kt | 15 ++++++++++++++ .../repository/YapLoginSessionRepository.kt | 20 +++++++++++++++++++ .../interactor/AuthorizationInteractor.kt | 4 ++++ .../repository/LoginSessionRepository.kt | 1 + 5 files changed, 42 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/sedsoftware/yaptalker/presentation/feature/authorization/AuthorizationFragment.kt b/app/src/main/java/com/sedsoftware/yaptalker/presentation/feature/authorization/AuthorizationFragment.kt index 7140401a..42424a15 100644 --- a/app/src/main/java/com/sedsoftware/yaptalker/presentation/feature/authorization/AuthorizationFragment.kt +++ b/app/src/main/java/com/sedsoftware/yaptalker/presentation/feature/authorization/AuthorizationFragment.kt @@ -87,10 +87,9 @@ class AuthorizationFragment : BaseFragment(), AuthorizationView { RxView.clicks(button_sign_in) .autoDisposable(event(FragmentLifecycle.DESTROY)) .subscribe({ - presenter.performLoginAttempt( + presenter.performLoginAttemptNew( authorization_login.text.toString(), - authorization_password.text.toString(), - authorization_anonymous.isChecked + authorization_password.text.toString() ) }, { e: Throwable -> e.message?.let { showErrorMessage(it) } diff --git a/app/src/main/java/com/sedsoftware/yaptalker/presentation/feature/authorization/AuthorizationPresenter.kt b/app/src/main/java/com/sedsoftware/yaptalker/presentation/feature/authorization/AuthorizationPresenter.kt index 1afe6549..80268de6 100644 --- a/app/src/main/java/com/sedsoftware/yaptalker/presentation/feature/authorization/AuthorizationPresenter.kt +++ b/app/src/main/java/com/sedsoftware/yaptalker/presentation/feature/authorization/AuthorizationPresenter.kt @@ -47,6 +47,21 @@ class AuthorizationPresenter @Inject constructor( }) } + fun performLoginAttemptNew(userLogin: String, userPassword: String) { + authorizationInteractor + .sendSignInRequestNew(login = userLogin, password = userPassword) + .observeOn(schedulers.ui()) + .autoDisposable(event(PresenterLifecycle.DESTROY)) + .subscribe({ + viewState.showLoginSuccessMessage() + Timber.i("Sign In request completed, start site preferences loading...") + loadSitePreferences() + }, { e: Throwable -> + Timber.e("Error: ${e.message}") + viewState.showLoginErrorMessage() + }) + } + private fun loadSitePreferences() { authorizationInteractor .getSiteUserPreferences() diff --git a/data/src/main/java/com/sedsoftware/yaptalker/data/repository/YapLoginSessionRepository.kt b/data/src/main/java/com/sedsoftware/yaptalker/data/repository/YapLoginSessionRepository.kt index 377e3839..12b2b0ef 100644 --- a/data/src/main/java/com/sedsoftware/yaptalker/data/repository/YapLoginSessionRepository.kt +++ b/data/src/main/java/com/sedsoftware/yaptalker/data/repository/YapLoginSessionRepository.kt @@ -1,10 +1,13 @@ package com.sedsoftware.yaptalker.data.repository +import android.util.Log import com.sedsoftware.yaptalker.data.exception.RequestErrorException import com.sedsoftware.yaptalker.data.mapper.LoginSessionInfoMapper import com.sedsoftware.yaptalker.data.mapper.ServerResponseMapper +import com.sedsoftware.yaptalker.data.network.site.YapApi import com.sedsoftware.yaptalker.data.network.site.YapLoader import com.sedsoftware.yaptalker.data.system.SchedulersProvider +import com.sedsoftware.yaptalker.domain.device.CookieStorage import com.sedsoftware.yaptalker.domain.entity.base.LoginSessionInfo import com.sedsoftware.yaptalker.domain.repository.LoginSessionRepository import io.reactivex.Completable @@ -13,6 +16,8 @@ import javax.inject.Inject class YapLoginSessionRepository @Inject constructor( private val dataLoader: YapLoader, + private val yapApi: YapApi, + private val cookieStorage: CookieStorage, private val dataMapper: LoginSessionInfoMapper, private val responseMapper: ServerResponseMapper, private val schedulers: SchedulersProvider @@ -67,6 +72,21 @@ class YapLoginSessionRepository @Inject constructor( } .subscribeOn(schedulers.io()) + override fun requestSignInWithApi(userLogin: String, userPassword: String): Completable = + yapApi + .authUser( + name = userLogin, + password = userPassword + ) + .flatMapCompletable { response -> + Log.d("NewAuth", "Response: $response") + val sid = response.user?.sid.orEmpty() + if (sid.isNotEmpty()) { + cookieStorage.saveCookie("SID=$sid") + } + Completable.complete() + } + .subscribeOn(schedulers.io()) @Suppress("MagicNumber") private fun String.toMd5(): String { diff --git a/domain/src/main/java/com/sedsoftware/yaptalker/domain/interactor/AuthorizationInteractor.kt b/domain/src/main/java/com/sedsoftware/yaptalker/domain/interactor/AuthorizationInteractor.kt index 1cdce1f2..dc072eb7 100644 --- a/domain/src/main/java/com/sedsoftware/yaptalker/domain/interactor/AuthorizationInteractor.kt +++ b/domain/src/main/java/com/sedsoftware/yaptalker/domain/interactor/AuthorizationInteractor.kt @@ -24,4 +24,8 @@ class AuthorizationInteractor @Inject constructor( fun sendSignInRequest(login: String, password: String, anonymously: Boolean): Completable = loginSessionRepository .requestSignIn(login, password, anonymously) + + fun sendSignInRequestNew(login: String, password: String): Completable = + loginSessionRepository + .requestSignInWithApi(login, password) } diff --git a/domain/src/main/java/com/sedsoftware/yaptalker/domain/repository/LoginSessionRepository.kt b/domain/src/main/java/com/sedsoftware/yaptalker/domain/repository/LoginSessionRepository.kt index 078dd855..7afa09e1 100644 --- a/domain/src/main/java/com/sedsoftware/yaptalker/domain/repository/LoginSessionRepository.kt +++ b/domain/src/main/java/com/sedsoftware/yaptalker/domain/repository/LoginSessionRepository.kt @@ -8,4 +8,5 @@ interface LoginSessionRepository { fun getLoginSessionInfo(): Single fun requestSignIn(userLogin: String, userPassword: String, anonymously: Boolean): Completable fun requestSignOut(userKey: String): Completable + fun requestSignInWithApi(userLogin: String, userPassword: String): Completable } From 950bf293a3111ee86544cde164ce65368082b9f3 Mon Sep 17 00:00:00 2001 From: DJ_Kovrik Date: Wed, 6 Nov 2019 21:29:32 +0300 Subject: [PATCH 6/7] versionCode --- build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index a96003d2..fe1abaf2 100644 --- a/build.gradle +++ b/build.gradle @@ -25,10 +25,10 @@ apply from: 'buildsystem/dependencies.gradle' // Versioning convention from ribot: // Major -> Millions, Minor -> Thousands, Bugfix -> Hundreds. E.g 1.3.72 == 1,003,072 -// Current: 1.0.4 (001,000,004) +// Current: 1.0.5 (001,000,005) def versionMajor = 1 def versionMinor = 0 -def versionPatch = 4 +def versionPatch = 5 allprojects { ext { @@ -74,4 +74,4 @@ detekt { output = "$projectDir/build/reports/detekt.xml" baseline = "$projectDir/build/reports/baseline.xml" } -} \ No newline at end of file +} From 5cf0284ca2e328ec32215a9f7e114f46a522f40a Mon Sep 17 00:00:00 2001 From: DJ_Kovrik Date: Wed, 6 Nov 2019 21:32:59 +0300 Subject: [PATCH 7/7] DOcs --- docs/CHANGELOG.md | 4 ++++ docs/CHANGELOG_RU.md | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 0f4d375a..b1826196 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,4 +1,8 @@ ## Changelog +### [1.0.5] - 2019-11-06 + +**Fixed** +* Authorization problems ### [1.0.4] - 2019-03-07 diff --git a/docs/CHANGELOG_RU.md b/docs/CHANGELOG_RU.md index 0300a7ac..6915da7a 100644 --- a/docs/CHANGELOG_RU.md +++ b/docs/CHANGELOG_RU.md @@ -1,4 +1,8 @@ ## Список исправлений +### [1.0.5] - 2019-11-06 + +**Исправлено** +* Проблемы с авторизацией ### [1.0.4] - 2019-03-07