Skip to content

Commit

Permalink
Merge pull request #11 from OkelloSam21/feature/business
Browse files Browse the repository at this point in the history
Feature/business
  • Loading branch information
OkelloSam21 authored Apr 19, 2024
2 parents 7f8b433 + de56eb4 commit 9d04125
Show file tree
Hide file tree
Showing 22 changed files with 422 additions and 417 deletions.
6 changes: 5 additions & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ dependencies {
implementation("com.google.android.gms:play-services-maps:18.2.0")
implementation("com.google.android.gms:play-services-location:21.2.0")
implementation("com.google.android.libraries.places:places:3.4.0")
implementation("androidx.test.ext:junit-ktx:1.1.5")
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
Expand Down Expand Up @@ -113,9 +114,12 @@ dependencies {
implementation("com.squareup.retrofit2:converter-gson:2.10.0")

implementation ("com.google.firebase:firebase-auth-ktx:22.3.1")
implementation ("com.google.android.gms:play-services-auth:21.0.0")
implementation ("com.google.android.gms:play-services-auth:21.1.0")

//Okhttp
implementation("com.squareup.okhttp3:okhttp:4.12.0")
implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")

//mockito
implementation("org.mockito:mockito-core:4.0.0")
}
122 changes: 8 additions & 114 deletions app/src/main/java/com/samuelokello/kazihub/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,13 @@ package com.samuelokello.kazihub
import android.Manifest
import android.content.pm.PackageManager
import android.location.Location
import android.os.Build
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels
import androidx.annotation.RequiresExtension
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
Expand All @@ -18,6 +21,7 @@ import androidx.navigation.compose.rememberNavController
import com.google.android.gms.maps.model.LatLng
import com.ramcosta.composedestinations.DestinationsNavHost
import com.ramcosta.composedestinations.rememberNavHostEngine
import com.samuelokello.kazihub.presentation.business.BusinessProfileViewModel
import com.samuelokello.kazihub.presentation.shared.NavGraphs
import com.samuelokello.kazihub.presentation.shared.components.StandardScaffold
import com.samuelokello.kazihub.presentation.shared.destinations.HomeScreenDestination
Expand All @@ -33,6 +37,7 @@ class MainActivity : ComponentActivity() {

private val LOCATION_PERMISSION_REQUEST_CODE = 1
private lateinit var locationManager: LocationManager
private val businessProfileViewModel: BusinessProfileViewModel by viewModels()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand Down Expand Up @@ -97,9 +102,12 @@ class MainActivity : ComponentActivity() {
// Handle the error
}

@RequiresExtension(extension = Build.VERSION_CODES.S, version = 7)
override fun onLocationLatLngReceived(latLng: LatLng) {
val latitude = latLng.latitude
val longitude = latLng.longitude

businessProfileViewModel.updateLocation(latitude, longitude)
}
})
} else {
Expand All @@ -108,117 +116,3 @@ class MainActivity : ComponentActivity() {
}
}


//@AndroidEntryPoint
//class MainActivity : ComponentActivity() {
//
// private val LOCATION_PERMISSION_REQUEST_CODE = 1
// private lateinit var locationManager: LocationManager
//
// @RequiresExtension(extension = Build.VERSION_CODES.S, version = 7)
// override fun onCreate(savedInstanceState: Bundle?) {
// super.onCreate(savedInstanceState)
//
// setContent {
// KaziHubTheme {
// // A surface container using the 'background' color from the theme
// Surface(
// modifier = Modifier.fillMaxSize(),
// color = MaterialTheme.colorScheme.background
// ) {
// val navController = rememberNavController()
// val navHostEngine = rememberNavHostEngine()
//
// val newBackStackEntry by navController.currentBackStackEntryAsState()
// val route = newBackStackEntry?.destination?.route
//
// StandardScaffold(
// navController = navController,
// showBottomBar = route in listOf(
// HomeScreenDestination.route,
// MessagesScreenDestination.route,
// ProfileScreenDestination.route,
// SettingsScreenDestination.route
// )
// ) {
// DestinationsNavHost(
// navGraph = NavGraphs.root,
// navController = navController,
// engine = navHostEngine,
// )
// }
// }
// }
// }
// }
//
// override fun onRequestPermissionsResult(
// requestCode: Int,
// permissions: Array<String>,
// grantResults: IntArray
// ) {
// val requestPermissionLauncher = registerForActivityResult( ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
// permissions.entries.forEach {
// val permissionName = it.key
// val isGranted = it.value
// }
//
// }
// when (requestCode) {
// LOCATION_PERMISSION_REQUEST_CODE -> {
// if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// // Permission was granted, you can now get the user location
// locationManager.getUserLocation(object : LocationManager.LocationCallback {
// override fun onLocationReceived(location: Location) {
// // Handle the location
// }
//
// override fun onLocationError(errorMessage: String) {
// // Handle the error
// }
// })
// } else {
// // Permission was denied, handle the error
// }
// return
// }
// }
// }
//
// sealed class PermissionRequestResult {
// object Granted : PermissionRequestResult()
// data class Denied(val deniedPermissions: List<String>) : PermissionRequestResult()
// object Error : PermissionRequestResult()
// }
//
// val requestPermissionLauncher = registerForActivityResult(
// ActivityResultContracts.RequestMultiplePermissions()
// ) { result ->
// val permissionRequestResult = when {
// result.all { it.value } -> PermissionRequestResult.Granted
// result.any { !it.value } -> PermissionRequestResult.Denied(result.filter { !it.value }.keys.toList())
// else -> PermissionRequestResult.Error
// }
//
// // Handle the permission request result
//
// when (permissionRequestResult) {
// PermissionRequestResult.Granted -> {
// // Permission was granted, get the user location
// locationManager.getUserLocation { location ->
// // Handle the location
// }
// }
//
// PermissionRequestResult.Denied -> {
// // Permission was denied, handle the error
// }
//
// PermissionRequestResult.Error -> {
// // An error occurred, handle the error
// }
// }
// }
//
//
//}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ interface KaziHubApi {
suspend fun signUp(@Body signUpRequest: SignUpRequest): SignUpResponse

@POST("auth/signin")
suspend fun sigIn(@Body signInRequest: com.samuelokello.kazihub.domain.model.shared.auth.sign_in.SignInRequest): SignInResponse
suspend fun signIn(@Body signInRequest: com.samuelokello.kazihub.domain.model.shared.auth.sign_in.SignInRequest): SignInResponse

@POST("/business/profiles/create")
suspend fun createBusinessProfile(
Expand All @@ -36,16 +36,23 @@ interface KaziHubApi {

@PUT("/business/profiles/{bus_profile_id}/update")
suspend fun updateBusinessProfile(
@Header("Authorization") token: String,
@Path("bus_profile_id") id: Int,
@Body businessProfile: BusinessProfileRequest
): BusinessProfileResponse

@PUT("/business/profiles/{bus_profile_id}/update/image")
suspend fun updateBusinessProfileImage(
@Header("Authorization") token: String,
@Path("bus_profile_id") id: Int,
@Body businessProfile: BusinessProfileRequest
): BusinessProfileResponse

@PUT("/business/profiles/image/{profile_id}")
suspend fun getBusinessProfileImage(
@Path("profile_id") id: Int
): BusinessProfileResponse

@GET("/business/verify/with_email/")
suspend fun verifyBusinessByEmail(
@Path("bus_profile_id") id: Int,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package com.samuelokello.kazihub.data.repository

import android.content.Context import android.os.Build
import android.content.Context
import android.os.Build
import android.util.Log
import androidx.annotation.RequiresExtension
import com.samuelokello.kazihub.data.model.sign_in.SignInResponse
import com.samuelokello.kazihub.data.remote.KaziHubApi
import com.samuelokello.kazihub.domain.model.Bussiness.BusinessProfileRequest
import com.samuelokello.kazihub.domain.model.Bussiness.BusinessProfileResponse
import com.samuelokello.kazihub.domain.model.shared.auth.sign_in.SignInRequest
import com.samuelokello.kazihub.domain.model.sign_up.SignUpRequest
import com.samuelokello.kazihub.domain.model.sign_up.SignUpResponse
import com.samuelokello.kazihub.utils.LocationManager
Expand Down Expand Up @@ -37,9 +39,9 @@ class KaziHubRepository
}


suspend fun signIn(signInRequest: com.samuelokello.kazihub.domain.model.shared.auth.sign_in.SignInRequest): Resource<SignInResponse> = withContext(Dispatchers.IO){
suspend fun signIn(signInRequest: SignInRequest): Resource<SignInResponse> = withContext(Dispatchers.IO){
return@withContext try {
val response = api.sigIn(signInRequest)
val response = api.signIn(signInRequest)
storeAccessToken(context, response.data?.accessToken!!)
Log.d("AuthRepository", "signIn: ${response.data.accessToken}")
Resource.Success(response)
Expand All @@ -53,8 +55,10 @@ class KaziHubRepository
return@withContext try {
val token = getAccessToken(context)
val response =if (token != null) {
Log.d("KaziHubRepository", "createBusinessProfile: $token")
api.createBusinessProfile(" Bearer $token",request)
} else {
Log.d("KaziHubRepository", "createBusinessProfile: Token is null")
throw Exception("Token is null")
}
Resource.Success(response)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,35 +1,36 @@
package com.samuelokello.kazihub.presentation.business

import android.annotation.SuppressLint
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.DrawerValue
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.rememberDrawerState
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.navigation.compose.rememberNavController
import com.samuelokello.kazihub.presentation.shared.components.AppBar
import com.samuelokello.kazihub.presentation.shared.components.ReusableModalNavigationDrawer
import com.samuelokello.kazihub.presentation.shared.components.StandardScaffold
import com.samuelokello.kazihub.ui.theme.KaziHubTheme

@SuppressLint("UnusedMaterial3ScaffoldPaddingParameter")
@Composable
fun BusinessHomeScreen() {
val navcontroller = rememberNavController()
val navController = rememberNavController()
val drawerState = rememberDrawerState(DrawerValue.Closed)
ReusableModalNavigationDrawer(
drawerState = drawerState,
drawerContent = { },
Scaffold (
topBar = {
AppBar(onNavigationIconClick = { })
AppBar(onNavigationIconClick = {})
},
bottomBar = {
StandardScaffold(
navController = navcontroller,
content = { /*TODO*/ }
)
}
) {
Column {
modifier = Modifier.padding(bottom = 32.dp)
){
Column(
modifier = Modifier
.fillMaxSize()
) {
Text(text = "Business Home Screen")
}
}
Expand Down
Loading

0 comments on commit 9d04125

Please sign in to comment.