diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..3003d35 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +Waste2Wealth \ No newline at end of file diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml deleted file mode 100644 index 0c0c338..0000000 --- a/.idea/deploymentTargetDropDown.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/java/app/waste2wealth/com/MainActivity.kt b/app/src/main/java/app/waste2wealth/com/MainActivity.kt index c0952a3..a968bd0 100644 --- a/app/src/main/java/app/waste2wealth/com/MainActivity.kt +++ b/app/src/main/java/app/waste2wealth/com/MainActivity.kt @@ -46,6 +46,7 @@ class MainActivity : ComponentActivity() { NavigationController(scaffoldState, locationViewModel, navController) // CompleteProfile() + } } } diff --git a/app/src/main/java/app/waste2wealth/com/communities/MainViewModel.kt b/app/src/main/java/app/waste2wealth/com/communities/CommunitiesViewModel.kt similarity index 85% rename from app/src/main/java/app/waste2wealth/com/communities/MainViewModel.kt rename to app/src/main/java/app/waste2wealth/com/communities/CommunitiesViewModel.kt index 365d4c4..14ccde8 100644 --- a/app/src/main/java/app/waste2wealth/com/communities/MainViewModel.kt +++ b/app/src/main/java/app/waste2wealth/com/communities/CommunitiesViewModel.kt @@ -3,7 +3,7 @@ package app.waste2wealth.com.communities import androidx.compose.runtime.mutableStateOf import androidx.lifecycle.ViewModel -class MainViewModel : ViewModel() { +class CommunitiesViewModel : ViewModel() { val expandedState = mutableStateOf(0f) val expandedState2 = mutableStateOf(0f) val currentPage = mutableStateOf(0) diff --git a/app/src/main/java/app/waste2wealth/com/communities/ui/CommunitiesScreen.kt b/app/src/main/java/app/waste2wealth/com/communities/ui/CommunitiesScreen.kt index 5da8df0..855eead 100644 --- a/app/src/main/java/app/waste2wealth/com/communities/ui/CommunitiesScreen.kt +++ b/app/src/main/java/app/waste2wealth/com/communities/ui/CommunitiesScreen.kt @@ -15,13 +15,10 @@ import androidx.compose.animation.slideInHorizontally import androidx.compose.animation.slideOutHorizontally import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.background -import androidx.compose.foundation.gestures.Orientation -import androidx.compose.foundation.gestures.draggable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height @@ -45,7 +42,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip -import androidx.compose.ui.draw.rotate import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.res.painterResource @@ -65,7 +61,7 @@ import com.google.accompanist.permissions.ExperimentalPermissionsApi import com.google.accompanist.permissions.rememberMultiplePermissionsState import com.jet.firestore.JetFirestore import com.jet.firestore.getListOfObjects -import app.waste2wealth.com.communities.MainViewModel +import app.waste2wealth.com.communities.CommunitiesViewModel import app.waste2wealth.com.profile.ProfileImage @OptIn( @@ -157,7 +153,7 @@ fun CommunitiesSection(navController: NavController, email: String) { label = "" ) - val viewModel: MainViewModel = remember { MainViewModel() } + val viewModel: CommunitiesViewModel = remember { CommunitiesViewModel() } Column( modifier = Modifier .background(appBackground) diff --git a/app/src/main/java/app/waste2wealth/com/communities/ui/LazyCardItem.kt b/app/src/main/java/app/waste2wealth/com/communities/ui/LazyCardItem.kt index 345d41d..e381e64 100644 --- a/app/src/main/java/app/waste2wealth/com/communities/ui/LazyCardItem.kt +++ b/app/src/main/java/app/waste2wealth/com/communities/ui/LazyCardItem.kt @@ -16,7 +16,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import app.waste2wealth.com.communities.MainViewModel +import app.waste2wealth.com.communities.CommunitiesViewModel import app.waste2wealth.com.communities.data.Drives val cleanlinessDrives = listOf( @@ -41,7 +41,7 @@ val cleanlinessDrives = listOf( @Composable fun LazyCard( list: List?, - viewModel: MainViewModel + viewModel: CommunitiesViewModel ) { LazyColumn( contentPadding = PaddingValues( diff --git a/app/src/main/java/app/waste2wealth/com/communities/ui/Pager2.kt b/app/src/main/java/app/waste2wealth/com/communities/ui/Pager2.kt index a195574..7122ec2 100644 --- a/app/src/main/java/app/waste2wealth/com/communities/ui/Pager2.kt +++ b/app/src/main/java/app/waste2wealth/com/communities/ui/Pager2.kt @@ -2,8 +2,6 @@ package app.waste2wealth.com.communities.ui import android.util.Log import androidx.compose.foundation.BorderStroke -import androidx.compose.foundation.border -import androidx.compose.foundation.clickable import androidx.compose.foundation.gestures.Orientation import androidx.compose.foundation.gestures.draggable import androidx.compose.foundation.gestures.rememberDraggableState @@ -20,7 +18,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.requiredHeight import androidx.compose.foundation.layout.requiredWidth -import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.Button import androidx.compose.material.ButtonDefaults @@ -39,7 +36,6 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.layoutId import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.constraintlayout.compose.ExperimentalMotionApi @@ -49,7 +45,7 @@ import app.waste2wealth.com.R import com.google.accompanist.pager.ExperimentalPagerApi import com.google.accompanist.pager.HorizontalPager import com.google.accompanist.pager.rememberPagerState -import app.waste2wealth.com.communities.MainViewModel +import app.waste2wealth.com.communities.CommunitiesViewModel import app.waste2wealth.com.components.permissions.Grapple import app.waste2wealth.com.profile.ProfileImage import app.waste2wealth.com.ui.theme.CardColor @@ -109,7 +105,7 @@ val items = listOf( @OptIn(ExperimentalPagerApi::class, ExperimentalMotionApi::class) @Composable fun Pager2( - viewModel: MainViewModel, + viewModel: CommunitiesViewModel, progress2: MutableState, padding: PaddingValues, ) { diff --git a/app/src/main/java/app/waste2wealth/com/dashboard/NewDashboard.kt b/app/src/main/java/app/waste2wealth/com/dashboard/NewDashboard.kt index 3febac6..fb35092 100644 --- a/app/src/main/java/app/waste2wealth/com/dashboard/NewDashboard.kt +++ b/app/src/main/java/app/waste2wealth/com/dashboard/NewDashboard.kt @@ -19,11 +19,15 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.items +import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.verticalScroll import androidx.compose.material.BottomDrawerValue import androidx.compose.material.Button import androidx.compose.material.ButtonDefaults @@ -46,6 +50,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.hilt.navigation.compose.hiltViewModel @@ -154,20 +160,20 @@ fun NewDashboard( ) { Card( modifier = Modifier - .fillMaxWidth() - .padding(20.dp), + .clip(RoundedCornerShape(0.dp, 0.dp, 50.dp, 50.dp)) + .fillMaxWidth(), backgroundColor = CardColor, - shape = RoundedCornerShape(10.dp) - ) { + + ) { Column { Row( modifier = Modifier .fillMaxWidth() .padding( - top = 25.dp, + top = 45.dp, bottom = 15.dp, end = 25.dp, - start = 15.dp + start = 25.dp ), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically @@ -213,7 +219,9 @@ fun NewDashboard( } LazyVerticalGrid( columns = GridCells.Fixed(2), - modifier = Modifier.fillMaxWidth() + modifier = Modifier + .fillMaxWidth() + .padding(bottom = 20.dp) ) { item { Column( @@ -289,243 +297,214 @@ fun NewDashboard( Spacer(modifier = Modifier.height(15.dp)) } } - Row( - modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.Center - ) { - Text( - text = "Earn Instant Points", - color = textColor, - fontSize = 16.sp, - fontFamily = monteBold, - modifier = Modifier.padding(top = 0.dp) - ) - } + + + Spacer(modifier = Modifier.height(20.dp)) Row( modifier = Modifier - .fillMaxWidth() - .padding(start = 15.dp, end = 15.dp, top = 15.dp, bottom = 25.dp), - horizontalArrangement = Arrangement.Center + .padding(horizontal = 40.dp) + .fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceEvenly + ) { + Card( - backgroundColor = CardColor, - shape = RoundedCornerShape(10.dp), - border = BorderStroke(1.dp, textColor), modifier = Modifier - .padding(end = 25.dp) - .fillMaxWidth(0.5f) - .clickable { - navController.navigate(Screens.ReportWaste.route) -// viewModel.getPlaces() - } + .height(80.dp) + .width(80.dp) + .padding(5.dp), + CircleShape ) { - Column( - verticalArrangement = Arrangement.Center, - horizontalAlignment = Alignment.CenterHorizontally - ) { - Image( - painter = painterResource(id = R.drawable.i1), - contentDescription = "image", - contentScale = ContentScale.Crop, - modifier = Modifier.size(110.dp) - ) - Text( - text = "Report Waste", - color = textColor, - fontFamily = monteBold, - modifier = Modifier.padding( - top = 0.dp, - start = 10.dp, - end = 10.dp, - bottom = 5.dp - ) - ) - Row(modifier = Modifier.padding(end = 0.dp, top = 7.dp)) { - Icon( - painter = painterResource(id = R.drawable.coins), - contentDescription = "coins", - modifier = Modifier - .size(20.dp) - .padding(end = 5.dp), - tint = Color.Unspecified - ) - Text( - text = "20", - color = textColor, - fontSize = 15.sp, - fontFamily = monteNormal, - ) - } - Spacer(modifier = Modifier.height(10.dp)) - - } - + Text( + text = "1", + fontWeight = FontWeight.Medium, + modifier = Modifier.padding(2.dp), + textAlign = TextAlign.Center + ) } + Card( - backgroundColor = CardColor, - shape = RoundedCornerShape(10.dp), - border = BorderStroke(1.dp, textColor), - modifier = Modifier.clickable { - navController.navigate(Screens.CollectWasteLists.route) - } + modifier = Modifier + .height(80.dp) + .width(80.dp) + .padding(5.dp), + CircleShape ) { - Column( - verticalArrangement = Arrangement.Center, - horizontalAlignment = Alignment.CenterHorizontally - ) { - Image( - painter = painterResource(id = R.drawable.i2), - contentDescription = "image", - contentScale = ContentScale.Crop, - modifier = Modifier - .size(110.dp) - .padding(horizontal = 13.dp) - ) - Text( - text = " Collect Waste ", - color = textColor, - fontFamily = monteBold, - modifier = Modifier.padding( - top = 0.dp, - start = 10.dp, - end = 10.dp, - bottom = 5.dp - ) - ) - Row(modifier = Modifier.padding(end = 0.dp, top = 7.dp)) { - Icon( - painter = painterResource(id = R.drawable.coins), - contentDescription = "coins", - modifier = Modifier - .size(20.dp) - .padding(end = 5.dp), - tint = Color.Unspecified - ) - Text( - text = "40", - color = textColor, - fontSize = 15.sp, - fontFamily = monteNormal, - ) - } - Spacer(modifier = Modifier.height(10.dp)) - - } + Text( + text = "1", + fontWeight = FontWeight.Medium, + modifier = Modifier.padding(2.dp), + textAlign = TextAlign.Center + ) + } + Card( + modifier = Modifier + .height(80.dp) + .width(80.dp) + .padding(5.dp), + CircleShape + ) { + Text( + text = "1", + fontWeight = FontWeight.Medium, + modifier = Modifier.padding(2.dp), + textAlign = TextAlign.Center + ) } + } + + + + Row( modifier = Modifier .fillMaxWidth() .padding(start = 20.dp, end = 25.dp), - horizontalArrangement = Arrangement.Center, - verticalAlignment = Alignment.CenterVertically ) { Text( - text = "Join Challenges", + text = "Upcoming Community Events", color = textColor, - fontSize = 16.sp, - fontFamily = monteBold, - ) + fontSize = 20.sp, + + ) } + Column(modifier = Modifier + .padding(top = 20.dp, bottom = 20.dp) + .verticalScroll(rememberScrollState())) { - LazyVerticalGrid( - columns = GridCells.Fixed(2), - modifier = Modifier.padding( - bottom = 100.dp, - start = 15.dp, - top = 10.dp, - end = 15.dp - ), - contentPadding = PaddingValues(bottom = 25.dp) - ) { - items(challengesList) { item -> - RepeatingCard( - type = item.type, - emoji = item.emoji, - title = item.title, - date = item.date - ) - } + LazyRow() { + items(5) { listItem -> + Card( + modifier = Modifier + .padding(15.dp) + ) { + Row(Modifier.background(color = Color.White)) { + Column( + modifier = Modifier + .width(150.dp) + .height(180.dp) + ) { + Image( + painter = painterResource(id = R.drawable.eight), + contentDescription = "" + ) + } + Column( + modifier = Modifier + .width(150.dp) + .height(180.dp) + .padding(all = 20.dp) + ) { + Text( + text = "Dadar Cleanup Drive", + fontSize = 15.sp, + color = Color.Black, + fontWeight = FontWeight.Medium, + + ) + Text( + text = "23rd Sept, 2023", + fontSize = 15.sp, + color = Color.Black, + + textAlign = TextAlign.Center + ) + Spacer(modifier = Modifier.height(10.dp)) + Button(onClick = { /*TODO*/ }) { + Text( + text = "Register", + fontWeight = FontWeight.Medium + ) + } + + } + + } + } + } + + } } + Spacer(modifier = Modifier.height(100.dp)) } - } } } -} -@Composable -fun RepeatingCard( - type: String, - emoji: String, - title: String, - date: String -) { - Card( - backgroundColor = CardColor, - shape = RoundedCornerShape( - topStart = 10.dp, - topEnd = 10.dp, - bottomEnd = 10.dp, - bottomStart = 50.dp - ), - modifier = Modifier.padding(end = 10.dp) + @Composable + fun RepeatingCard( + type: String, + emoji: String, + title: String, + date: String ) { - var register by remember { mutableStateOf("Register") } - Column(modifier = Modifier.padding(15.dp)) { - Text( - text = type, - color = Color.Gray, - fontSize = 13.sp, - fontFamily = monteSB, - modifier = Modifier.padding(bottom = 10.dp) - ) - Text( - text = title, - color = textColor, - fontSize = 18.sp, - fontFamily = monteSB, - modifier = Modifier.padding(bottom = 10.dp), - softWrap = true - ) - Text( - text = date, - color = Color.Gray, - fontSize = 16.sp, - fontFamily = monteSB, - modifier = Modifier.padding(bottom = 10.dp) - ) - - Button( - onClick = { - register = "Registered" - }, - colors = ButtonDefaults.buttonColors( - backgroundColor = textColor, - contentColor = Color.White - ), - shape = RoundedCornerShape(35.dp), - modifier = Modifier.padding(start = 10.dp) - ) { + Card( + backgroundColor = CardColor, + shape = RoundedCornerShape( + topStart = 10.dp, + topEnd = 10.dp, + bottomEnd = 10.dp, + bottomStart = 50.dp + ), + modifier = Modifier.padding(end = 10.dp) + ) { + var register by remember { mutableStateOf("Register") } + Column(modifier = Modifier.padding(15.dp)) { + Text( + text = type, + color = Color.Gray, + fontSize = 13.sp, + fontFamily = monteSB, + modifier = Modifier.padding(bottom = 10.dp) + ) Text( - text = register, - color = Color.White, - fontSize = 12.sp, + text = title, + color = textColor, + fontSize = 18.sp, fontFamily = monteSB, - modifier = Modifier.padding(bottom = 4.dp), - maxLines = 1, + modifier = Modifier.padding(bottom = 10.dp), softWrap = true ) + Text( + text = date, + color = Color.Gray, + fontSize = 16.sp, + fontFamily = monteSB, + modifier = Modifier.padding(bottom = 10.dp) + ) + + Button( + onClick = { + register = "Registered" + }, + colors = ButtonDefaults.buttonColors( + backgroundColor = textColor, + contentColor = Color.White + ), + shape = RoundedCornerShape(35.dp), + modifier = Modifier.padding(start = 10.dp) + ) { + Text( + text = register, + color = Color.White, + fontSize = 12.sp, + fontFamily = monteSB, + modifier = Modifier.padding(bottom = 4.dp), + maxLines = 1, + softWrap = true + ) + } + } } - } } diff --git a/app/src/main/java/app/waste2wealth/com/navigation/NavigationController.kt b/app/src/main/java/app/waste2wealth/com/navigation/NavigationController.kt index ac41c50..0ea8cea 100644 --- a/app/src/main/java/app/waste2wealth/com/navigation/NavigationController.kt +++ b/app/src/main/java/app/waste2wealth/com/navigation/NavigationController.kt @@ -34,6 +34,7 @@ import app.waste2wealth.com.login.onboarding.SettingUp import app.waste2wealth.com.profile.NewProfileScreen import app.waste2wealth.com.qrcode.ui.ScanQr import app.waste2wealth.com.reportwaste.ReportWaste +import app.waste2wealth.com.rewards.ClaimedRewardsScreen import app.waste2wealth.com.rewards.NewRewardsScreen import app.waste2wealth.com.rewards.RewardDetails import app.waste2wealth.com.successtask.DeliveryDetailsScreen @@ -211,6 +212,15 @@ fun NavigationController( name = name.value, ) } + composable(Screens.ClaimedRewards.route) { + ClaimedRewardsScreen( + navController = navController, + email = email.value, + name =name.value, + pfp =profile.value, + viewModel =viewModel + ) + } composable( Screens.TaskDetail.route .plus( @@ -248,7 +258,7 @@ fun NavigationController( } composable(route = Screens.SuccessTask.route.plus( - "?${TaskDetailsConstants.taskPrice.value}={taskPrice}" + "?${TaskDetailsConstants.taskPrice.value}={taskPrice}" ), arguments = listOf( navArgument("taskPrice") { this.type = NavType.StringType @@ -276,8 +286,8 @@ fun NavigationController( composable(Screens.QrCodeScanner.route) { ScanQr(viewModel = locationViewModel) } - - composable(Screens.Splash.route){ + + composable(Screens.Splash.route) { SplashScreen(navController = navController, email = email.value) } diff --git a/app/src/main/java/app/waste2wealth/com/navigation/Screens.kt b/app/src/main/java/app/waste2wealth/com/navigation/Screens.kt index 53209e0..13ab902 100644 --- a/app/src/main/java/app/waste2wealth/com/navigation/Screens.kt +++ b/app/src/main/java/app/waste2wealth/com/navigation/Screens.kt @@ -1,7 +1,10 @@ package app.waste2wealth.com.navigation +import androidx.navigation.NavHostController + sealed class Screens(val route: String) { + object Onboarding : Screens("onboarding") object CompleteProfile : Screens("completeProfile") object Community : Screens("community") @@ -15,6 +18,7 @@ sealed class Screens(val route: String) { object StopRecording : Screens("stopRecording") object Rewards : Screens("rewards") object RewardsDetails : Screens("rewardsDetails") + object ClaimedRewards : Screens("claimedRewards") object LoginScreen : Screens("login") object Dashboard : Screens("dashboard") object Profile : Screens("profile") diff --git a/app/src/main/java/app/waste2wealth/com/rewards/ClaimedRewards.kt b/app/src/main/java/app/waste2wealth/com/rewards/ClaimedRewards.kt new file mode 100644 index 0000000..f49a28e --- /dev/null +++ b/app/src/main/java/app/waste2wealth/com/rewards/ClaimedRewards.kt @@ -0,0 +1,489 @@ +package app.waste2wealth.com.rewards + +import android.Manifest +import androidx.compose.foundation.Image +import androidx.compose.foundation.ScrollState +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.lazy.grid.GridCells +import androidx.compose.foundation.lazy.grid.LazyVerticalGrid +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.BottomDrawerValue +import androidx.compose.material.Card +import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.material.Icon +import androidx.compose.material.Scaffold +import androidx.compose.material.Text +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Star +import androidx.compose.material.rememberBottomDrawerState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavHostController +import app.waste2wealth.com.R +import app.waste2wealth.com.bottombar.BottomBar +import app.waste2wealth.com.components.permissions.PermissionDrawer +import app.waste2wealth.com.firebase.firestore.ProfileInfo +import app.waste2wealth.com.location.LocationViewModel +import app.waste2wealth.com.navigation.Screens +import app.waste2wealth.com.ui.theme.appBackground +import app.waste2wealth.com.ui.theme.monteBold +import app.waste2wealth.com.ui.theme.monteNormal +import app.waste2wealth.com.ui.theme.textColor +import coil.compose.AsyncImage +import com.google.accompanist.permissions.ExperimentalPermissionsApi +import com.google.accompanist.permissions.rememberMultiplePermissionsState +import com.jet.firestore.JetFirestore +import com.jet.firestore.getListOfObjects + +@OptIn( + ExperimentalPermissionsApi::class, ExperimentalComposeUiApi::class, + ExperimentalMaterialApi::class +) +@Composable +fun ClaimedRewardsScreen( + navController: NavHostController, + email: String, + name: String, + pfp: String, + viewModel: LocationViewModel +) { + val onClick = { + viewModel.rewardImage.value = + "https://img.freepik.com/premium-psd/headphone-giveaway-contestpromotion-instagram-facebook-social-media-post-template_501590-116.jpg?w=2000" + viewModel.rewardTitle.value = "Boat Headphones" + viewModel.rewardDescription.value = + "Immerse yourself in exceptional audio quality with these headphones," + + " designed for ultimate comfort and delivering a truly immersive sound experience. Whether for music, movies, or calls, these headphones will elevate your audio enjoyment to new heights" + viewModel.rewardNoOfPoints.value = 60 + navController.navigate(Screens.RewardsDetails.route) + } + val permissionState = rememberMultiplePermissionsState( + permissions = listOf( + Manifest.permission.ACCESS_FINE_LOCATION, + Manifest.permission.ACCESS_COARSE_LOCATION + ) + ) + val permissionDrawerState = rememberBottomDrawerState( + if (permissionState.allPermissionsGranted) BottomDrawerValue.Closed else BottomDrawerValue.Open + ) + var profileList by remember { + mutableStateOf?>(null) + } + var userAddress by remember { + mutableStateOf("") + } + var phoneNumber by remember { + mutableStateOf("") + } + var gender by remember { + mutableStateOf("") + } + var organization by remember { + mutableStateOf("") + } + var pointsEarned by remember { + mutableStateOf(0) + } + var pointsRedeemed by remember { + mutableStateOf(0) + } + var noOfTimesReported by remember { + mutableStateOf(0) + } + var noOfTimesCollected by remember { + mutableStateOf(0) + } + var noOfTimesActivity by remember { + mutableStateOf(0) + } + val cList = listOf("Market", "My Rewards") + var tabIndex by remember { mutableStateOf(0) } + JetFirestore(path = { + collection("ProfileInfo") + }, onRealtimeCollectionFetch = { value, _ -> + profileList = value?.getListOfObjects() + }) { + if (profileList != null) { + for (i in profileList!!) { + if (i.email == email) { + userAddress = i.address ?: "" + gender = i.gender ?: "" + phoneNumber = i.phoneNumber ?: "" + organization = i.organization ?: "" + pointsEarned = i.pointsEarned + pointsRedeemed = i.pointsRedeemed + noOfTimesReported = i.noOfTimesReported + noOfTimesCollected = i.noOfTimesCollected + noOfTimesActivity = i.noOfTimesActivity + } + } + } + + PermissionDrawer( + drawerState = permissionDrawerState, + permissionState = permissionState, + rationaleText = "To continue, allow Report Waste2Wealth to access your device's location" + + ". Tap Settings > Permission, and turn \"Access Location On\" on.", + withoutRationaleText = "Location permission required for functionality of this app." + + " Please grant the permission.", + ) { + Scaffold(bottomBar = { + BottomBar(navController = navController) + }) { + println(it) + Column( + modifier = Modifier + .fillMaxWidth() + .background(appBackground) + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .padding( + top = 35.dp, + bottom = 35.dp, + start = 20.dp, + end = 20.dp + ), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Column { + Text( + text = "Claimed Rewards", + color = textColor, + fontSize = 25.sp, + fontFamily = monteBold, + ) + Text( + text = "Push yourself for more", + color = Color.LightGray, + fontSize = 13.sp, + fontFamily = monteBold, + ) + } + Row( + modifier = Modifier + .fillMaxWidth() + .padding(top = 15.dp, end = 0.dp, start = 20.dp), + horizontalArrangement = Arrangement.End, + verticalAlignment = Alignment.CenterVertically + ) { + Row( + modifier = Modifier.padding(end = 25.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.End + ) { + Icon( + painter = painterResource(id = R.drawable.coins), + contentDescription = "coins", + modifier = Modifier + .size(40.dp) + .padding(end = 5.dp), + tint = Color.Unspecified + ) + Text( + text = pointsEarned.toString(), + color = textColor, + fontSize = 15.sp, + softWrap = true, + fontFamily = monteNormal, + ) + } + + } + } + LazyColumn( + modifier = Modifier + .fillMaxSize() + .background(appBackground), + contentPadding = PaddingValues(top = 1.dp, bottom = 0.dp) + ) { + item { + Column( + modifier = Modifier + .fillMaxWidth() + + ) { + +// Spacer(modifier = Modifier.height(50.dp)) + Row { + Image( + painter = painterResource(id = R.drawable.rewardgeneral), + contentDescription = "", + Modifier + .height(100.dp) + .fillMaxWidth(), contentScale = ContentScale.FillBounds + ) + + } + + LazyRow() { + items(21) { listItem -> + Card( + modifier = Modifier + .height(40.dp) + .width(40.dp) + .padding(5.dp) + ) { + Text( + text = "1", + fontWeight = FontWeight.Medium, + modifier = Modifier.padding(2.dp), + textAlign = TextAlign.Center + ) + } + } + } + +// Spacer(modifier = Modifier.height(20.dp)) + + Row( + modifier = Modifier.padding( + vertical = 4.dp, + horizontal = 18.dp, + ), + + ) { + Text( + text = "Your Rewards", + fontSize = 25.sp, + color = Color.Black, + fontWeight = FontWeight.Medium, + textAlign = TextAlign.Center + ) + } + + + LazyVerticalGrid() + LazyVerticalGrid() + + + + + + } + + } + } + } + } + } + + } +} + + + + +@Composable +fun LazyVerticalGrid() { + + LazyVerticalGrid( + columns = GridCells.Fixed(2), + modifier = Modifier + .height(180.dp) + .padding(start = 25.dp, end = 25.dp), +// .offset(y = (-55).dp), + horizontalArrangement = Arrangement.SpaceEvenly, + verticalArrangement = Arrangement.Center + ) { + items(1) { + + Column(modifier = Modifier.padding(5.dp)) { + Card( + modifier = Modifier.padding(0.dp), + backgroundColor = Color(0xFF3C3E41), + shape = RoundedCornerShape(20.dp) + ) { + Box( + modifier = Modifier.padding( + top = 30.dp, + start = 40.dp + ) + ) { + Card( + modifier = Modifier + .height(40.dp) + .width(40.dp) + .padding(5.dp), + CircleShape + ) { + Text( + text = "1", + fontWeight = FontWeight.Medium, + modifier = Modifier.padding(2.dp), + textAlign = TextAlign.Center + ) + } + } + Column { + Row( + modifier = Modifier + .fillMaxWidth() + .height(60.dp) + .background(color = Color.Red) + ) { + + } + Row( + modifier = Modifier + .height(100.dp) + .fillMaxWidth() + .background(color = Color.Black) + ) { + + Column( + modifier = Modifier + .padding( + horizontal = 10.dp, + vertical = 10.dp + ), + + ) { + Text( + text = "Flat $100 off", + color = Color.White, + fontWeight = FontWeight.SemiBold, + fontSize = 15.sp, + fontFamily = monteBold, + textAlign = TextAlign.Center, + + ) + Text( + text = "Cashback on Paytm to a friend", + color = Color.White, + fontSize = 7.sp, + fontFamily = monteBold, + textAlign = TextAlign.Center + ) + + } + + } + } + + + } + } + } + + + items(1) { + + Column(modifier = Modifier.padding(5.dp)) { + Card( + modifier = Modifier.padding(0.dp), + backgroundColor = Color(0xFF3C3E41), + shape = RoundedCornerShape(20.dp) + ) { + Box( + modifier = Modifier.padding( + top = 30.dp, + start = 40.dp + ) + ) { + Card( + modifier = Modifier + .height(40.dp) + .width(40.dp) + .padding(5.dp), + CircleShape + ) { + Text( + text = "1", + fontWeight = FontWeight.Medium, + modifier = Modifier.padding(2.dp), + textAlign = TextAlign.Center + ) + } + } + Column { + Row( + modifier = Modifier + .fillMaxWidth() + .height(55.dp) + .background(color = Color.Green) + ) { + + } + Row( + modifier = Modifier + .fillMaxWidth() + .height(50.dp) + .background(color = Color.White), + horizontalArrangement = Arrangement.Center, + verticalAlignment = Alignment.CenterVertically + ) { + + Text( + text = "Activating", + color = Color.Blue, + fontWeight = FontWeight.SemiBold, + fontSize = 15.sp, + fontFamily = monteBold, + textAlign = TextAlign.Center, + + ) + + } + Row( + modifier = Modifier + .height(55.dp) + .fillMaxWidth() + .padding(horizontal = 4.dp) + .background(color = Color.Black), + horizontalArrangement = Arrangement.Center, + verticalAlignment = Alignment.CenterVertically + ) { + + Text( + text = "Cashback on Paytm to a friend", + color = Color.White, + fontSize = 12.sp, + textAlign = TextAlign.Center + ) + + } + } + + + } + } + } + + + } +} \ No newline at end of file diff --git a/app/src/main/java/app/waste2wealth/com/rewards/NewRewardsScreen.kt b/app/src/main/java/app/waste2wealth/com/rewards/NewRewardsScreen.kt index eae4679..8751ae6 100644 --- a/app/src/main/java/app/waste2wealth/com/rewards/NewRewardsScreen.kt +++ b/app/src/main/java/app/waste2wealth/com/rewards/NewRewardsScreen.kt @@ -36,6 +36,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.navigation.NavHostController @@ -75,7 +76,8 @@ fun NewRewardsScreen( "Immerse yourself in exceptional audio quality with these headphones," + " designed for ultimate comfort and delivering a truly immersive sound experience. Whether for music, movies, or calls, these headphones will elevate your audio enjoyment to new heights" viewModel.rewardNoOfPoints.value = 60 - navController.navigate(Screens.RewardsDetails.route) +// navController.navigate(Screens.RewardsDetails.route) + navController.navigate(Screens.ClaimedRewards.route) } val permissionState = rememberMultiplePermissionsState( permissions = listOf( @@ -217,7 +219,7 @@ fun NewRewardsScreen( modifier = Modifier .fillMaxSize() .background(appBackground), - contentPadding = PaddingValues(top = 10.dp, bottom = 0.dp) + contentPadding = PaddingValues(top = 1.dp, bottom = 0.dp) ) { item { Column( @@ -225,45 +227,36 @@ fun NewRewardsScreen( .fillMaxWidth() .padding(20.dp) ) { - Text( - text = "Welcome to Rewards Section", - color = textColor, - fontSize = 15.sp, - fontFamily = monteBold, - ) - AsyncImage( - model = "https://img.freepik.com/premium-psd/headphone-giveaway-contestpromotion-instagram-facebook-social-media-post-template_501590-116.jpg?w=2000", - contentDescription = "", - modifier = Modifier - .padding(top = 20.dp) - .fillMaxWidth() - .clickable { - onClick() - } - ) - Spacer(modifier = Modifier.height(20.dp)) - Text( - text = "New Offers", - color = textColor, - fontSize = 16.sp, - fontFamily = monteBold, - ) - Text( - text = "Check out the latest offers and rewards", - color = Color.LightGray, - fontSize = 10.sp, - fontFamily = monteBold, - modifier = Modifier.padding(top = 8.dp) - ) + +// Text( +// text = "New Offers", +// color = textColor, +// textAlign = TextAlign.Center, +// fontSize = 16.sp, +// fontFamily = monteBold, +// +// ) +// Text( +// text = "Check out the latest offers and rewards", +// color = Color.LightGray, +// fontSize = 10.sp, +// fontFamily = monteBold, +// modifier = Modifier.padding(top = 8.dp) +// ) + + Spacer(modifier =Modifier.height(30.dp)) + LazyVerticalGrid( columns = GridCells.Fixed(2), modifier = Modifier - .height(300.dp) - .offset(y = (-10).dp), - contentPadding = PaddingValues(top = 30.dp, bottom = 10.dp) + .height(200.dp) + .offset(y = (-55).dp), + horizontalArrangement = Arrangement.SpaceEvenly, + verticalArrangement = Arrangement.Center ) { items(2) { - Column(modifier = Modifier.padding(10.dp)) { + + Column(modifier = Modifier.padding(5.dp)) { Card( modifier = Modifier.padding(0.dp), backgroundColor = Color(0xFF3C3E41), @@ -272,11 +265,12 @@ fun NewRewardsScreen( Column { Card( modifier = Modifier.padding(0.dp), - backgroundColor = Color.White, + backgroundColor = appBackground, shape = RoundedCornerShape(10.dp) ) { AsyncImage( - model = "https://img.freepik.com/premium-psd/headphone-giveaway-contestpromotion-instagram-facebook-social-media-post-template_501590-116.jpg?w=2000", + model = "https://img.freepik.com/premium-psd/headphone-giveaway-contest" + + "-promotion-instagram-facebook-social-media-post-template_501590-116.jpg?w=2000", contentDescription = "", modifier = Modifier .padding(0.dp) @@ -313,12 +307,14 @@ fun NewRewardsScreen( LazyVerticalGrid( columns = GridCells.Fixed(2), modifier = Modifier - .height(300.dp) - .offset(y = (-55).dp) + .height(200.dp) + .offset(y = (-55).dp), + horizontalArrangement = Arrangement.SpaceEvenly, + verticalArrangement = Arrangement.Center ) { items(2) { - Column(modifier = Modifier.padding(10.dp)) { + Column(modifier = Modifier.padding(5.dp)) { Card( modifier = Modifier.padding(0.dp), backgroundColor = Color(0xFF3C3E41), @@ -366,31 +362,17 @@ fun NewRewardsScreen( } } - Text( - text = "Jackpot Giveaway", - color = textColor, - fontSize = 22.sp, - fontFamily = monteBold, - modifier = Modifier.offset(y = (-100).dp) - ) - AsyncImage( - model = "https://img.freepik.com/premium-psd/headphone-giveaway-contest" + - "-promotion-instagram-facebook-social-media-post-template_501590-116.jpg?w=2000", - contentDescription = "", - modifier = Modifier - .padding(top = 0.dp) - .offset(y = (-80).dp) - .fillMaxWidth() - ) - Spacer(modifier = Modifier.height(20.dp)) LazyVerticalGrid( columns = GridCells.Fixed(2), modifier = Modifier - .height(300.dp) - .offset(y = (-80).dp) + .height(200.dp) + .offset(y = (-55).dp), + horizontalArrangement = Arrangement.SpaceEvenly, + verticalArrangement = Arrangement.Center ) { items(2) { - Column(modifier = Modifier.padding(10.dp)) { + + Column(modifier = Modifier.padding(5.dp)) { Card( modifier = Modifier.padding(0.dp), backgroundColor = Color(0xFF3C3E41), @@ -438,6 +420,84 @@ fun NewRewardsScreen( } } + + + + + +// Text( +// text = "Jackpot Giveaway", +// color = textColor, +// fontSize = 22.sp, +// fontFamily = monteBold, +// modifier = Modifier.offset(y = (-100).dp) +// ) +// AsyncImage( +// model = "https://img.freepik.com/premium-psd/headphone-giveaway-contest" + +// "-promotion-instagram-facebook-social-media-post-template_501590-116.jpg?w=2000", +// contentDescription = "", +// modifier = Modifier +// .padding(top = 0.dp) +// .offset(y = (-80).dp) +// .fillMaxWidth() +// ) +// Spacer(modifier = Modifier.height(20.dp)) +// LazyVerticalGrid( +// columns = GridCells.Fixed(2), +// modifier = Modifier +// .height(300.dp) +// .offset(y = (-80).dp) +// ) { +// items(2) { +// Column(modifier = Modifier.padding(10.dp)) { +// Card( +// modifier = Modifier.padding(0.dp), +// backgroundColor = Color(0xFF3C3E41), +// shape = RoundedCornerShape(7.dp) +// ) { +// Column { +// Card( +// modifier = Modifier.padding(0.dp), +// backgroundColor = appBackground, +// shape = RoundedCornerShape(10.dp) +// ) { +// AsyncImage( +// model = "https://img.freepik.com/premium-psd/headphone-giveaway-contest" + +// "-promotion-instagram-facebook-social-media-post-template_501590-116.jpg?w=2000", +// contentDescription = "", +// modifier = Modifier +// .padding(0.dp) +// .clickable { +// onClick() +// }, +// contentScale = ContentScale.Fit +// ) +// } +// Row( +// modifier = Modifier.fillMaxWidth(), +// horizontalArrangement = Arrangement.Center +// ) { +// Text( +// text = "Ends in 2 days", +// color = Color.White, +// fontSize = 10.sp, +// fontFamily = monteBold, +// modifier = Modifier.padding( +// horizontal = 20.dp, +// vertical = 9.dp +// ) +// ) +// } +// +// } +// } +// +// +// } +// +// } +// } + Spacer(modifier = Modifier.height(80.dp)) Text( text = "Keep Reporting", color = Color.LightGray, diff --git a/app/src/main/res/drawable/rewardgeneral.png b/app/src/main/res/drawable/rewardgeneral.png new file mode 100644 index 0000000..a3ed1ea Binary files /dev/null and b/app/src/main/res/drawable/rewardgeneral.png differ