Browse Source

Feedback API implemented, changed text for dialog of launch on startup

Khubaib 8 months ago
parent
commit
9d39acc24c

+ 9 - 0
app/src/main/java/com/vpn/fastestvpnservice/retrofit/Api.kt

@@ -88,4 +88,13 @@ interface Api {
         @Field("message") message: String?,
     ): Call<Any>
 
+    @FormUrlEncoded
+    @POST("feedback")
+    fun feedback(
+        @Field("rating") rating: Int?,
+        @Field("server_id") server_id: Int?,
+        @Field("server_ip") server_ip: String?,
+        @Field("protocol") protocol: String?
+    ): Call<Any>
+
 }

+ 20 - 0
app/src/main/java/com/vpn/fastestvpnservice/screens/bottomNavBarScreens/HomeScreen.kt

@@ -976,12 +976,22 @@ fun Home(
                                             ),
                                             interactionSource = remember { MutableInteractionSource() }
                                         ) {
+                                            val connectedServer = basePreferenceHelper.getConnectedServer()
+                                            val selectedProtocol = basePreferenceHelper.getProtocol().full_name
+
                                             if (!isFeedbackClicked) {
                                                 isFeedbackClicked = true
                                                 prefHelper.setFeedbackState(true)
                                                 isThumbUpClicked = true
                                                 App.isThumbUpClicked = true
                                                 isRipple = true
+
+                                                homeViewModel.feedback(
+                                                    rating = 1,
+                                                    server_id = connectedServer?.id,
+                                                    server_ip = connectedServer?.ip.toString(),
+                                                    protocol = selectedProtocol
+                                                )
                                             }
                                         }
                                             ,
@@ -1003,11 +1013,21 @@ fun Home(
                                                         ),
                                                         interactionSource = remember { MutableInteractionSource() }
                                                     ) {
+                                                        val connectedServer = basePreferenceHelper.getConnectedServer()
+                                                        val selectedProtocol = basePreferenceHelper.getProtocol().full_name
+
                                                         if (!isFeedbackClicked) {
                                                             isFeedbackClicked = true
                                                             prefHelper.setFeedbackState(true)
                                                             isThumbDownClicked = true
                                                             App.isThumbDownClicked = true
+
+                                                            homeViewModel.feedback(
+                                                                rating = 0,
+                                                                server_id = connectedServer?.id,
+                                                                server_ip = connectedServer?.ip.toString(),
+                                                                protocol = selectedProtocol
+                                                            )
                                                         }
                                                     },
                                                 colorFilter = ColorFilter.tint(

+ 4 - 25
app/src/main/java/com/vpn/fastestvpnservice/screens/bottomNavBarScreens/SettingsScreen.kt

@@ -241,7 +241,7 @@ fun Settings(navHostController: NavHostController, activity: ComponentActivity)
                         properties = DialogProperties(),
                         modifier = Modifier
                             .fillMaxWidth()
-                            .height(280.dp)
+                            .height(260.dp)
                     ) {
                         LaunchDialog(
                             onCancel = {
@@ -471,35 +471,14 @@ fun ColumnScope.LaunchDialog(
                 maxLines = 2,
                 style = MaterialTheme.typography.customTypography.displayLarge,
                 modifier = Modifier
-                    .padding(top = 30.dp, start = 25.dp)
-                    .align(Alignment.Start)
+                    .padding(top = 30.dp, start = 0.dp)
             )
-            Text(text = "Step 1.  Press Enable Button",
+            Text(text = "Please enable \"Allow Display Over Other Apps\" permissions to use the Launch on Startup feature",
 //                color = MaterialTheme.colorScheme.primary,
                 color = MaterialTheme.colorScheme.primary,
                 style = MaterialTheme.typography.labelMedium,
-                maxLines = 1,
-                modifier = Modifier
-                    .padding(top = 25.dp, start = 25.dp)
-                    .align(Alignment.Start)
-            )
-            Text(text = "Step 2.  Search FastestVPN",
-//                color = MaterialTheme.colorScheme.primary,
-                color = MaterialTheme.colorScheme.primary,
-                style = MaterialTheme.typography.labelMedium,
-                maxLines = 1,
-                modifier = Modifier
-                    .padding(top = 15.dp, start = 25.dp)
-                    .align(Alignment.Start)
-            )
-            Text(text = "Step 3.  Allow Permission",
-//                color = MaterialTheme.colorScheme.primary,
-                color = MaterialTheme.colorScheme.primary,
-                style = MaterialTheme.typography.labelMedium,
-                maxLines = 1,
                 modifier = Modifier
-                    .padding(top = 15.dp, start = 25.dp)
-                    .align(Alignment.Start)
+                    .padding(top = 25.dp, start = 15.dp, end = 15.dp)
             )
             Row (
                 modifier = Modifier

+ 37 - 0
app/src/main/java/com/vpn/fastestvpnservice/viewmodels/HomeViewModel.kt

@@ -18,6 +18,7 @@ import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.launch
 import retrofit2.Call
+import java.util.Objects
 
 class HomeViewModel constructor(context: Context, scope: CoroutineScope): ViewModel() {
     var prefHelper: BasePreferenceHelper = BasePreferenceHelper(context)
@@ -119,4 +120,40 @@ class HomeViewModel constructor(context: Context, scope: CoroutineScope): ViewMo
             })
         )
     }
+
+    fun feedback(
+        rating: Int?,
+        server_id: Int?,
+        server_ip: String?,
+        protocol: String?
+    ) {
+
+        WebServiceFactory.getInstance().feedback(rating, server_id, server_ip, protocol)?.enqueue(
+            RetrofitNetworkHandling<Any>(object :
+                RetrofitNetworkHandling.ResponseCallback<Any> {
+                override fun onSuccess(call: Call<Any>?, response: Any?) {
+                    try {
+                        Log.d("test_api_response", "feedback onSuccess: try")
+                        val gson = Gson()
+                        val jsonString = gson.toJson(response)
+                        val type = object : TypeToken<DataResponse<Objects?>?>() {}.type
+                        val data = gson.fromJson<DataResponse<Objects>>(jsonString, type)
+                        Log.d("test_api_response", "data = ${data.status} ${data.message}")
+
+                    } catch (ex: Exception) {
+                        Log.d("test_api_response", "feedback onSuccess: catch")
+                    }
+
+                }
+
+                override fun onFail(call: Call<Any>?, response: Any?) {
+                    Log.d("test_api_response", "feedback onFail")
+                }
+
+                override fun onError(call: Call<Any>?, response: Any?) {
+                    Log.d("test_api_response", "feedback onError")
+                }
+            })
+        )
+    }
 }