diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..5ebbc93
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+Weekly
\ No newline at end of file
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 0000000..7643783
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ xmlns:android
+
+ ^$
+
+
+
+
+
+
+
+
+ xmlns:.*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*:id
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:name
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ name
+
+ ^$
+
+
+
+
+
+
+
+
+ style
+
+ ^$
+
+
+
+
+
+
+
+
+ .*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*
+
+ http://schemas.android.com/apk/res/android
+
+
+ ANDROID_ATTRIBUTE_ORDER
+
+
+
+
+
+
+ .*
+
+ .*
+
+
+ BY_NAME
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..79ee123
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index c5fefdb..2fdf5a4 100644
--- a/.idea/deploymentTargetDropDown.xml
+++ b/.idea/deploymentTargetDropDown.xml
@@ -1,17 +1,17 @@
-
+
-
+
-
+
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/ottogo/weekly/api/WeeklyApiService.kt b/app/src/main/java/com/ottogo/weekly/api/WeeklyApiService.kt
index 4258dd6..c41f46d 100644
--- a/app/src/main/java/com/ottogo/weekly/api/WeeklyApiService.kt
+++ b/app/src/main/java/com/ottogo/weekly/api/WeeklyApiService.kt
@@ -27,6 +27,8 @@ private val retrofit = Retrofit.Builder()
interface WeeklyApiService {
@POST("api/account/login/")
suspend fun login(@Body body: Map)
+ @POST("api/account/create/")
+ suspend fun signup(@Body body: Map) : Map
}
diff --git a/app/src/main/java/com/ottogo/weekly/ui/components/Message.kt b/app/src/main/java/com/ottogo/weekly/ui/components/Message.kt
index 8d7b876..1b7fedc 100644
--- a/app/src/main/java/com/ottogo/weekly/ui/components/Message.kt
+++ b/app/src/main/java/com/ottogo/weekly/ui/components/Message.kt
@@ -19,7 +19,7 @@ import androidx.navigation.NavController
@Composable
-fun Message(navController: NavController, message: String) {
+fun Message(message: String) {
diff --git a/app/src/main/java/com/ottogo/weekly/ui/login/LandingPage.kt b/app/src/main/java/com/ottogo/weekly/ui/login/LandingPage.kt
index 076077c..c15e81d 100644
--- a/app/src/main/java/com/ottogo/weekly/ui/login/LandingPage.kt
+++ b/app/src/main/java/com/ottogo/weekly/ui/login/LandingPage.kt
@@ -1,43 +1,75 @@
package com.ottogo.weekly.ui.login
+import android.graphics.Color
import android.os.Bundle
import android.util.Log
+import android.widget.TextView
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.background
+import androidx.compose.foundation.horizontalScroll
+import androidx.compose.foundation.layout.*
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.runtime.*
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Modifier
+import androidx.compose.ui.focus.focusModifier
+import androidx.compose.ui.text.font.FontFamily
+import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
import androidx.navigation.NavController
import com.ottogo.weekly.api.WeeklyApi
import com.ottogo.weekly.ui.components.CustomButton
+import com.ottogo.weekly.ui.theme.nunitoFamily
import kotlinx.coroutines.runBlocking
+import java.time.format.TextStyle
@Composable
fun LandingPage(navController: NavController) {
+ Column(modifier = Modifier.padding(24.dp)){
- Column(){
+ displayTitle("Weekly")
+ displayGreeting("Make your best memories")
- CustomButton(buttonText = "Sign up"){
- runBlocking {
- navController.navigate("signupBirthdayPage")
+
+ Spacer(modifier = Modifier.padding(187.dp))
+ CustomButton(buttonText = "Sign up") {
+ runBlocking {
+ navController.navigate("signupBirthdayPage")
+ }
+ Modifier.height(48.dp)
}
- }
- CustomButton(buttonText = "Login"){
- runBlocking {
- navController.navigate("loginPage")
+ Spacer(modifier = Modifier.height(15.dp))
+ CustomButton(buttonText = "Login") {
+ runBlocking {
+ navController.navigate("loginPage")
+ }
}
}
- }
-}
\ No newline at end of file
+}
+
+@Composable
+fun displayTitle(appName: String) {
+ Spacer(modifier = Modifier.height(65.dp))
+ Text(text = appName,
+ fontSize = 48.sp,
+ fontWeight = FontWeight(700),
+ fontFamily = nunitoFamily
+ )
+}
+@Composable
+fun displayGreeting(greeting: String) {
+ Spacer(modifier = Modifier.height(17.dp))
+ Text(text = greeting,
+ fontSize = 24.sp,
+ fontWeight = FontWeight(700),
+ fontFamily = nunitoFamily)
+}
diff --git a/app/src/main/java/com/ottogo/weekly/ui/login/SignupBirthdayPage.kt b/app/src/main/java/com/ottogo/weekly/ui/login/SignupBirthdayPage.kt
index 11ac590..2d05d07 100644
--- a/app/src/main/java/com/ottogo/weekly/ui/login/SignupBirthdayPage.kt
+++ b/app/src/main/java/com/ottogo/weekly/ui/login/SignupBirthdayPage.kt
@@ -7,6 +7,7 @@ import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.width
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface
import androidx.compose.material.Text
@@ -16,6 +17,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.navigation.NavController
+import com.ottogo.weekly.ui.components.CustomButton
+import kotlinx.coroutines.runBlocking
/*
*
@@ -33,7 +36,13 @@ fun SignupBirthdayPage(navController: NavController) {
Column(){
-
+ Text(text ="birthday page")
+ CustomButton(buttonText = "Sign up") {
+ runBlocking {
+ navController.navigate("signupPage/{dob}")
+ }
+ Modifier.width(27.dp)
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/ottogo/weekly/ui/login/SignupPage.kt b/app/src/main/java/com/ottogo/weekly/ui/login/SignupPage.kt
index c8d7a8e..2f4bf66 100644
--- a/app/src/main/java/com/ottogo/weekly/ui/login/SignupPage.kt
+++ b/app/src/main/java/com/ottogo/weekly/ui/login/SignupPage.kt
@@ -1,21 +1,37 @@
package com.ottogo.weekly.ui.login
+import android.graphics.Paint
import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.padding
-import androidx.compose.material.MaterialTheme
-import androidx.compose.material.Surface
-import androidx.compose.material.Text
+import androidx.compose.animation.expandHorizontally
+import androidx.compose.animation.expandVertically
+import androidx.compose.foundation.layout.*
+import androidx.compose.foundation.layout.Arrangement.Absolute.Center
+import androidx.compose.foundation.layout.Arrangement.Absolute.aligned
+import androidx.compose.material.*
+import androidx.compose.material.icons.materialIcon
import androidx.compose.runtime.*
import androidx.compose.runtime.saveable.rememberSaveable
+import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import androidx.compose.ui.focus.focusModifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.text.font.FontWeight
+import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
import androidx.navigation.NavController
+import com.ottogo.weekly.api.WeeklyApi
+import com.ottogo.weekly.ui.components.CustomButton
+import com.ottogo.weekly.ui.components.CustomTextField
+import com.ottogo.weekly.ui.login.ui.components.Message
+import com.ottogo.weekly.ui.theme.nunitoFamily
+import kotlinx.coroutines.runBlocking
+import retrofit2.HttpException
+import java.io.IOException
/*
*
@@ -30,13 +46,158 @@ import androidx.navigation.NavController
* Try your best! Please don't hesitate to ask any questions
*
* */
+
+
+// todo : implement Shriya's custom text fields
+// question : is alignment and padding correct?
+// question : Are we using Scaffold/ floating action button ?
+// what am I recieving from birthday?
+// getting string value
+// todo: add response errors
+
@Composable
-fun SignupPage(navController: NavController, dob: String) {
+fun SignupPage(navController: NavController, dob: String = "2001-07-10") {
+ val phoneNumber = remember { mutableStateOf("") }
+ val username = remember { mutableStateOf("") }
+ val password = remember { mutableStateOf("") }
+ var error: String? by remember {mutableStateOf(value = null)}
+
+ Column(horizontalAlignment = Alignment.CenterHorizontally,
+ modifier = Modifier
+ .fillMaxSize()
+ .padding(horizontal = 24.dp)
+ ){
+ Box(
+ modifier = Modifier.fillMaxWidth()
+ ){
+ //todo : add navigation back button
+ Spacer(modifier = Modifier.height(64.dp))
+ displaySignupTitle(title = "Sign Up")
+ }
+ if (error != null){
+ Spacer(modifier = Modifier.height(32.dp))
+ Message(error.toString())
+ }
+ // phone text field
+ Spacer(modifier = Modifier.height(32.dp))
+ CustomTextField(
+ helper = "Phone",
+ hint = "9517596842",
+ input = phoneNumber.value,
+ onChange = { phoneNumber.value = it })
+ // username text field
+ Spacer(modifier = Modifier.height(24.dp))
+ CustomTextField(
+ helper = "Username",
+ hint = "Username",
+ input = username.value,
+ onChange = { username.value = it })
- Column(){
+ // Password text field
+ Spacer(modifier = Modifier.height(24.dp))
+ CustomTextField(
+ helper = "Password",
+ hint = "Password",
+ input = password.value,
+ onChange = { password.value = it })
+ // todo : navigate to verify page and pass token to verify page
+ Spacer(modifier = Modifier.height(25.dp))
+ CustomButton(buttonText = "Sign Up") {
+ runBlocking {
+ navController.navigate("signupVerifyPage/{token}")
+ try {
+ WeeklyApi.retrofitService.signup(
+ mapOf(
+ "phone" to phoneNumber.toString(),
+ "username" to username.toString(),
+ "password" to password.toString(),
+ "dob" to dob
+ )
+ )
+ } catch (e: Exception) {
+ when (e) {
+ is HttpException -> {
+ val statuscode = e.code()
+ if (statuscode == 400) {
+ error = "400 error"
+ }
+ if (statuscode == 500) {
+ error = "500 error"
+ }
+ }
+ is IOException -> {
+ error = "Check your connection"
+ }
+ }
+ }
+
+ }
+ }
+
+ //test
+ Spacer(modifier = Modifier.height(32.dp))
+ Text(
+ //modifier = Modifier.size(250.dp),
+ text = "By tapping \"Sign Up\", I agree to",
+ fontSize = 14.sp,
+ fontFamily = nunitoFamily,
+ color = Color.Gray
+ )
+ // todo : policy and eula in row
+ Row() {
+ Text(
+ text = "Privacy Policy" ,
+ fontFamily = nunitoFamily,
+ fontSize = 14.sp,
+ color = Color.Gray
+ )
+ Spacer(modifier = Modifier.width(16.dp))
+ Text(
+ text = "EULA",
+ fontFamily = nunitoFamily,
+ fontSize = 14.sp,
+ color = Color.Gray
+ )
+ }
+
+ }
}
-}
\ No newline at end of file
+
+@Composable
+fun displaySignupTitle(title: String) {
+ Spacer(modifier = Modifier.height(44.dp))
+ Text(text = title,
+ fontSize = 42.sp,
+ fontWeight = FontWeight(700),
+ fontFamily = nunitoFamily
+ )
+}
+
+@Composable
+fun displayTextFieldTitle(title: String){
+ Text(text = title,
+ textAlign = TextAlign.Left,
+ fontSize = 16.sp,
+ fontWeight = FontWeight(700),
+ fontFamily = nunitoFamily
+ )
+}
+
+// todo: make red box
+@Composable
+fun ErrorMessage500(){
+ Text(text = "We are experiencing issues please try again later",
+ fontFamily = nunitoFamily,
+ color = Color.Red)
+}
+@Composable
+fun ErrorMessage400(){
+ Text(text = "an unexpected error occurred",
+ fontFamily = nunitoFamily,
+ color = Color.Red)
+}
+