diff --git a/app/src/main/java/org/foxarmy/barcodescannerforemployees/Net.kt b/app/src/main/java/org/foxarmy/barcodescannerforemployees/Net.kt index ac1edc8..5136aa0 100644 --- a/app/src/main/java/org/foxarmy/barcodescannerforemployees/Net.kt +++ b/app/src/main/java/org/foxarmy/barcodescannerforemployees/Net.kt @@ -9,6 +9,7 @@ import java.io.File import kotlin.concurrent.thread class Net { + var language = "en-US" fun requestProductFromOnlineDB(barcode: String): String { var response = "" @@ -24,6 +25,7 @@ class Net { .url(url) .post(body) .addHeader("referer", "https://ean-online.ru") + .addHeader("accept-language", language) .build() response = client.newCall(request).execute().body!!.string() @@ -51,22 +53,13 @@ class Net { .url("https://$server/api/user/register") .post(body) .addHeader("content-type", "application/x-www-form-urlencoded") + .addHeader("accept-language", language) .build() response = client.newCall(request).execute() }.join() - return when (response.code) { - 200 -> { - login(server, username, password) - } - 400 -> { - "Such username exists" - } - else -> { - "Unknown error" - } - } + return response.body!!.string() } fun login(server: String, username: String, password: String): String { @@ -83,6 +76,7 @@ class Net { .url("https://$server/api/user/login") .post(body) .addHeader("content-type", "application/x-www-form-urlencoded") + .addHeader("accept-language", language) .build() response = client.newCall(requestLogin).execute() }.join() @@ -104,7 +98,6 @@ class Net { body.addFormDataPart("barcode", abstractProduct.barcode) body.addFormDataPart("name", abstractProduct.name) body.addFormDataPart("net_weight", abstractProduct.netWeight.toString()) - body.addFormDataPart("image_filename", abstractProduct.imageHash) body.addFormDataPart("category", abstractProduct.category.toString()) body.addFormDataPart("unit", abstractProduct.unit.toString()) @@ -114,6 +107,7 @@ class Net { .url("https://$server/api/abstractproduct/create") .post(requestBody) .addHeader("Authorization", "Bearer $token") + .addHeader("accept-language", language) .build() response = client.newCall(request).execute() @@ -139,6 +133,7 @@ class Net { val request = Request.Builder().url("https://$server/api/user/changeUsername") .post(requestBody) .addHeader("Authorization", "Bearer $token") + .addHeader("accept-language", language) .build() response = client.newCall(request).execute() }.join() @@ -163,6 +158,7 @@ class Net { val request = Request.Builder().url("https://$server/api/user/changePassword") .post(requestBody) .addHeader("Authorization", "Bearer $token") + .addHeader("accept-language", language) .build() response = client.newCall(request).execute() }.join() diff --git a/app/src/main/java/org/foxarmy/barcodescannerforemployees/activities/AddAbstractProductActivity.kt b/app/src/main/java/org/foxarmy/barcodescannerforemployees/activities/AddAbstractProductActivity.kt index 4ae19f0..5acc7c1 100644 --- a/app/src/main/java/org/foxarmy/barcodescannerforemployees/activities/AddAbstractProductActivity.kt +++ b/app/src/main/java/org/foxarmy/barcodescannerforemployees/activities/AddAbstractProductActivity.kt @@ -161,6 +161,8 @@ class AddAbstractProductActivity : AppCompatActivity() { EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV, EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM ) + val language = sharedPreferences.getString("language", "en-US") + n.language = language!! val token = sharedPreferences.getString("token", "") val response = n.uploadAbstractProduct("bsfe.foxarmy.org", 1, abstractProduct, File(pictureFile.absolutePath), token!!); diff --git a/app/src/main/java/org/foxarmy/barcodescannerforemployees/activities/LoginActivity.kt b/app/src/main/java/org/foxarmy/barcodescannerforemployees/activities/LoginActivity.kt index 609da8a..f5ce131 100644 --- a/app/src/main/java/org/foxarmy/barcodescannerforemployees/activities/LoginActivity.kt +++ b/app/src/main/java/org/foxarmy/barcodescannerforemployees/activities/LoginActivity.kt @@ -2,6 +2,7 @@ package org.foxarmy.barcodescannerforemployees.activities import android.content.Intent import android.os.Bundle +import android.widget.ArrayAdapter import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.security.crypto.EncryptedSharedPreferences @@ -20,6 +21,8 @@ class LoginActivity : AppCompatActivity() { binding = ActivityLoginBinding.inflate(layoutInflater); setContentView(binding.root) + fillUpLanguagesSpinner() + val masterKeyAlias = MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC) val sharedPreferences = EncryptedSharedPreferences.create( @@ -34,13 +37,15 @@ class LoginActivity : AppCompatActivity() { val server = binding.serverTextEdit.text.toString() val username = binding.usernameTextEdit.text.toString() val password = binding.passwordTextEdit.text.toString() + val language = resources.getStringArray(R.array.languages)[binding.languageSpinner.selectedItemPosition] + sharedPreferences.edit().putString("language", language).apply() val n = Net() + n.language = language val response = n.login(server, username, password) - //TODO: handle it properly when server will support Accept-Language header - if (response == "Wrong password") { - Toast.makeText(this, getString(R.string.wrong_password), Toast.LENGTH_SHORT).show() + if (response.length < 40) { + Toast.makeText(this, response, Toast.LENGTH_SHORT).show() } else { sharedPreferences.edit().putString("token", response).apply() val intent = Intent(this, MainActivity::class.java) @@ -53,13 +58,16 @@ class LoginActivity : AppCompatActivity() { val server = binding.serverTextEdit.text.toString() val username = binding.usernameTextEdit.text.toString() val password = binding.passwordTextEdit.text.toString() + val language = resources.getStringArray(R.array.languages)[binding.languageSpinner.selectedItemPosition] + sharedPreferences.edit().putString("language", language).apply() val n = Net() + n.language = language val response = n.registerAccount(server, username, password); - //TODO: handle it properly when server will support Accept-Language header - if (response == "Such username exists") { - Toast.makeText(this, getString(R.string.username_already_exists), Toast.LENGTH_SHORT).show(); + + if (response.length < 40) { + Toast.makeText(this, response, Toast.LENGTH_SHORT).show(); } else { sharedPreferences.edit().putString("token", response).apply() sharedPreferences.edit().putString("server", server).apply() @@ -67,10 +75,14 @@ class LoginActivity : AppCompatActivity() { startActivity(intent) finish() } - } + } - + private fun fillUpLanguagesSpinner() { + val languages = resources.getStringArray(R.array.languages) + val arrayAdapter = ArrayAdapter(this, androidx.appcompat.R.layout.support_simple_spinner_dropdown_item, languages) + arrayAdapter.setDropDownViewResource(androidx.appcompat.R.layout.support_simple_spinner_dropdown_item) + binding.languageSpinner.adapter = arrayAdapter } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 48f8829..b90992f 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -25,7 +25,7 @@ android:layout_height="wrap_content" android:id="@+id/offlineButton" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginBottom="300dp"/> + android:layout_marginBottom="250dp"/> + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintBottom_toTopOf="@+id/languageSpinner" android:layout_marginBottom="24dp"/> + \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 780a430..968f097 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -103,4 +103,8 @@ Navigation close New name New password + + en-US + ru-RU + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fe69702..57e9dfc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -101,4 +101,8 @@ Navigation close New name New password + + en-US + ru-RU + \ No newline at end of file