peterluo3131 commited on
Commit
3f5eb73
·
1 Parent(s): 4e573d8

feature: update setting page to manage server url

Browse files
Android/app/build.gradle CHANGED
@@ -68,7 +68,6 @@ dependencies {
68
  testImplementation 'org.testng:testng:6.9.6'
69
 
70
  // Testing-only dependencies
71
- androidTestImplementation "androidx.test:core:$rootProject.coreVersion"
72
  androidTestImplementation "androidx.test.ext:junit:$rootProject.extJUnitVersion"
73
  androidTestImplementation "androidx.test:runner:$rootProject.runnerVersion"
74
 
 
68
  testImplementation 'org.testng:testng:6.9.6'
69
 
70
  // Testing-only dependencies
 
71
  androidTestImplementation "androidx.test.ext:junit:$rootProject.extJUnitVersion"
72
  androidTestImplementation "androidx.test:runner:$rootProject.runnerVersion"
73
 
Android/app/src/main/java/com/matthaigh27/chatgptwrapper/data/models/setting/SettingModel.kt CHANGED
@@ -5,6 +5,7 @@ import com.matthaigh27.chatgptwrapper.data.models.chat.HelpPromptModel
5
  import com.matthaigh27.chatgptwrapper.data.remote.requests.common.OpenAISetting
6
 
7
  data class SettingModel(
 
8
  val openaiKey: String,
9
  val pineconeEnv: String,
10
  val pineconeKey: String,
 
5
  import com.matthaigh27.chatgptwrapper.data.remote.requests.common.OpenAISetting
6
 
7
  data class SettingModel(
8
+ val serverUrl: String,
9
  val openaiKey: String,
10
  val pineconeEnv: String,
11
  val pineconeKey: String,
Android/app/src/main/java/com/matthaigh27/chatgptwrapper/data/remote/ApiClient.kt CHANGED
@@ -1,31 +1,54 @@
1
  package com.matthaigh27.chatgptwrapper.data.remote
2
 
3
- import com.matthaigh27.chatgptwrapper.utils.constants.CommonConstants.API_BASE_URL
4
  import okhttp3.OkHttpClient
5
  import retrofit2.Retrofit
6
  import retrofit2.converter.gson.GsonConverterFactory
7
  import java.util.concurrent.TimeUnit
8
 
9
- object ApiClient {
 
 
 
10
  val TIME_OUT_CALL = 60L
11
  val TIME_OUT_CONNECT = 60L
12
  val TIME_OUT_READ = 60L
13
  val TIME_OUT_WRITE = 60L
14
 
15
- private val client = OkHttpClient
16
- .Builder()
17
- .callTimeout(TIME_OUT_CALL, TimeUnit.SECONDS)
18
- .connectTimeout(TIME_OUT_CONNECT, TimeUnit.SECONDS)
19
- .readTimeout(TIME_OUT_READ, TimeUnit.SECONDS)
20
- .writeTimeout(TIME_OUT_WRITE, TimeUnit.SECONDS)
21
- .build()
22
-
23
- private val retrofit = Retrofit
24
- .Builder()
25
- .baseUrl(API_BASE_URL)
26
- .addConverterFactory(GsonConverterFactory.create())
27
- .client(client)
28
- .build()
29
-
30
- val apiService: ApiService = retrofit.create(ApiService::class.java)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  }
 
1
  package com.matthaigh27.chatgptwrapper.data.remote
2
 
3
+ import com.matthaigh27.chatgptwrapper.data.repository.SharedPreferencesRepository
4
  import okhttp3.OkHttpClient
5
  import retrofit2.Retrofit
6
  import retrofit2.converter.gson.GsonConverterFactory
7
  import java.util.concurrent.TimeUnit
8
 
9
+ class ApiClient {
10
+ /**
11
+ * This variables are used to set time for http communication.
12
+ */
13
  val TIME_OUT_CALL = 60L
14
  val TIME_OUT_CONNECT = 60L
15
  val TIME_OUT_READ = 60L
16
  val TIME_OUT_WRITE = 60L
17
 
18
+ var apiService: ApiService
19
+
20
+ private var serverUrl: String
21
+ private var client: OkHttpClient
22
+ private var retrofit: Retrofit
23
+
24
+ init {
25
+ /**
26
+ * The server url is set to url that a user stored before.
27
+ * If the user run this app at first, server url is set to default url.
28
+ */
29
+ val keys = SharedPreferencesRepository.getConfig()
30
+ serverUrl = keys.serverUrl
31
+
32
+ client = OkHttpClient
33
+ .Builder()
34
+ .callTimeout(TIME_OUT_CALL, TimeUnit.SECONDS)
35
+ .connectTimeout(TIME_OUT_CONNECT, TimeUnit.SECONDS)
36
+ .readTimeout(TIME_OUT_READ, TimeUnit.SECONDS)
37
+ .writeTimeout(TIME_OUT_WRITE, TimeUnit.SECONDS)
38
+ .build()
39
+
40
+ retrofit = Retrofit
41
+ .Builder()
42
+ .baseUrl(serverUrl)
43
+ .addConverterFactory(GsonConverterFactory.create())
44
+ .client(client)
45
+ .build()
46
+
47
+ apiService = retrofit.create(ApiService::class.java)
48
+ }
49
+
50
+
51
+ companion object {
52
+ val instance = ApiClient()
53
+ }
54
  }
Android/app/src/main/java/com/matthaigh27/chatgptwrapper/data/repository/RemoteRepository.kt CHANGED
@@ -30,8 +30,11 @@ import kotlin.coroutines.suspendCoroutine
30
 
31
 
32
  object RemoteRepository {
33
- private val apiService = ApiClient.apiService
34
 
 
 
 
35
  fun getKeys(): Keys{
36
  RoomRepository
37
  val settingModel = SharedPreferencesRepository.getConfig()
 
30
 
31
 
32
  object RemoteRepository {
33
+ private val apiService = ApiClient.instance.apiService
34
 
35
+ /**
36
+ * This function is used to get keys to manage backend.
37
+ */
38
  fun getKeys(): Keys{
39
  RoomRepository
40
  val settingModel = SharedPreferencesRepository.getConfig()
Android/app/src/main/java/com/matthaigh27/chatgptwrapper/ui/setting/view/SettingActivity.kt CHANGED
@@ -20,6 +20,7 @@ class SettingActivity : BaseActivity() {
20
  private val CONFIRM_MESSAGE = "Are you sure you want to set?"
21
 
22
  private lateinit var txtPineconeKey: TextInputLayout
 
23
  private lateinit var txtPineconeEnv: TextInputLayout
24
  private lateinit var txtFirebaseKey: TextInputLayout
25
  private lateinit var txtTemperature: TextInputLayout
@@ -37,6 +38,7 @@ class SettingActivity : BaseActivity() {
37
 
38
  private fun init() {
39
  txtPineconeKey = findViewById(R.id.txt_pinecone_key)
 
40
  txtPineconeEnv = findViewById(R.id.txt_pinecone_env)
41
  txtFirebaseKey = findViewById(R.id.txt_firebase_key)
42
  txtTemperature = findViewById(R.id.txt_temperature)
@@ -63,6 +65,7 @@ class SettingActivity : BaseActivity() {
63
  is ApiResource.Success -> {
64
  resource.data?.let { data ->
65
  txtPineconeKey.editText?.setText(data.pineconeKey)
 
66
  txtPineconeEnv.editText?.setText(data.pineconeEnv)
67
  txtFirebaseKey.editText?.setText(data.firebaseKey)
68
  txtTemperature.editText?.setText(data.setting.temperature.toString())
@@ -100,17 +103,13 @@ class SettingActivity : BaseActivity() {
100
  val firebaseKey = txtFirebaseKey.editText?.text.toString()
101
  val temperature = txtTemperature.editText?.text.toString().toFloat()
102
  val openaiKey = txtOpenAIKey.editText?.text.toString()
103
-
104
- if (pineconeEnv == "" || pineconeKey == "" || firebaseKey == "" || openaiKey == ""){
105
- showToast("Please fill out all the inputs")
106
- return
107
- }
108
-
109
 
110
  val confirmDialog = ConfirmDialog(this)
111
  confirmDialog.setOnClickListener(object : ConfirmDialog.OnDialogButtonClickListener {
112
  override fun onPositiveButtonClick() {
113
  val setting = SettingModel(
 
114
  openaiKey = openaiKey,
115
  pineconeEnv = pineconeEnv,
116
  pineconeKey = pineconeKey,
 
20
  private val CONFIRM_MESSAGE = "Are you sure you want to set?"
21
 
22
  private lateinit var txtPineconeKey: TextInputLayout
23
+ private lateinit var txtServerUrl: TextInputLayout
24
  private lateinit var txtPineconeEnv: TextInputLayout
25
  private lateinit var txtFirebaseKey: TextInputLayout
26
  private lateinit var txtTemperature: TextInputLayout
 
38
 
39
  private fun init() {
40
  txtPineconeKey = findViewById(R.id.txt_pinecone_key)
41
+ txtServerUrl = findViewById(R.id.txt_server_url)
42
  txtPineconeEnv = findViewById(R.id.txt_pinecone_env)
43
  txtFirebaseKey = findViewById(R.id.txt_firebase_key)
44
  txtTemperature = findViewById(R.id.txt_temperature)
 
65
  is ApiResource.Success -> {
66
  resource.data?.let { data ->
67
  txtPineconeKey.editText?.setText(data.pineconeKey)
68
+ txtServerUrl.editText?.setText(data.serverUrl)
69
  txtPineconeEnv.editText?.setText(data.pineconeEnv)
70
  txtFirebaseKey.editText?.setText(data.firebaseKey)
71
  txtTemperature.editText?.setText(data.setting.temperature.toString())
 
103
  val firebaseKey = txtFirebaseKey.editText?.text.toString()
104
  val temperature = txtTemperature.editText?.text.toString().toFloat()
105
  val openaiKey = txtOpenAIKey.editText?.text.toString()
106
+ val serverUrl: String = txtServerUrl.editText?.text.toString()
 
 
 
 
 
107
 
108
  val confirmDialog = ConfirmDialog(this)
109
  confirmDialog.setOnClickListener(object : ConfirmDialog.OnDialogButtonClickListener {
110
  override fun onPositiveButtonClick() {
111
  val setting = SettingModel(
112
+ serverUrl = serverUrl,
113
  openaiKey = openaiKey,
114
  pineconeEnv = pineconeEnv,
115
  pineconeKey = pineconeKey,
Android/app/src/main/java/com/matthaigh27/chatgptwrapper/utils/helpers/chat/SettingHelper.kt CHANGED
@@ -2,10 +2,12 @@ package com.matthaigh27.chatgptwrapper.utils.helpers.chat
2
 
3
  import com.matthaigh27.chatgptwrapper.data.models.setting.SettingModel
4
  import com.matthaigh27.chatgptwrapper.data.remote.requests.common.OpenAISetting
 
5
 
6
  object SettingHelper {
7
  fun emptySettingModel(): SettingModel{
8
  return SettingModel(
 
9
  openaiKey = "",
10
  pineconeEnv = "",
11
  pineconeKey = "",
 
2
 
3
  import com.matthaigh27.chatgptwrapper.data.models.setting.SettingModel
4
  import com.matthaigh27.chatgptwrapper.data.remote.requests.common.OpenAISetting
5
+ import com.matthaigh27.chatgptwrapper.utils.constants.CommonConstants.API_BASE_URL
6
 
7
  object SettingHelper {
8
  fun emptySettingModel(): SettingModel{
9
  return SettingModel(
10
+ serverUrl = API_BASE_URL,
11
  openaiKey = "",
12
  pineconeEnv = "",
13
  pineconeKey = "",
Android/app/src/main/res/layout/activity_setting.xml CHANGED
@@ -64,6 +64,18 @@
64
 
65
  </com.google.android.material.textfield.TextInputLayout>
66
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  <com.google.android.material.textfield.TextInputLayout
68
  android:id="@+id/txt_openai_key"
69
  style="@style/CommonEditText"
 
64
 
65
  </com.google.android.material.textfield.TextInputLayout>
66
 
67
+ <com.google.android.material.textfield.TextInputLayout
68
+ android:id="@+id/txt_server_url"
69
+ style="@style/CommonEditText"
70
+ android:layout_marginBottom="@dimen/spacing_tiny"
71
+ android:hint="@string/label_setting_server_url">
72
+
73
+ <com.google.android.material.textfield.TextInputEditText
74
+ android:layout_width="match_parent"
75
+ android:layout_height="wrap_content" />
76
+
77
+ </com.google.android.material.textfield.TextInputLayout>
78
+
79
  <com.google.android.material.textfield.TextInputLayout
80
  android:id="@+id/txt_openai_key"
81
  style="@style/CommonEditText"
Android/app/src/main/res/values/strings.xml CHANGED
@@ -19,6 +19,7 @@
19
  <string name="title_chat_widget_set_alarm">Set an alarm</string>
20
 
21
  <string name="label_setting_uuid">uuid</string>
 
22
  <string name="label_setting_openai_key">OpenAI Key</string>
23
  <string name="label_setting_pinecone_key">Pinecone Key</string>
24
  <string name="label_setting_pinecone_env">Pinecone Env</string>
 
19
  <string name="title_chat_widget_set_alarm">Set an alarm</string>
20
 
21
  <string name="label_setting_uuid">uuid</string>
22
+ <string name="label_setting_server_url">Server Url</string>
23
  <string name="label_setting_openai_key">OpenAI Key</string>
24
  <string name="label_setting_pinecone_key">Pinecone Key</string>
25
  <string name="label_setting_pinecone_env">Pinecone Env</string>