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