Skip to content

Commit af883b6

Browse files
Merge pull request #2 from cuappdev/andrew/auth-components-resources
Google Auth - Implement Auth Components and Add Icon Assets (Part 2)
2 parents 37bddd2 + 47a6554 commit af883b6

10 files changed

Lines changed: 211 additions & 1 deletion

File tree

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
33
xmlns:tools="http://schemas.android.com/tools">
4-
4+
<uses-permission android:name="android.permission.INTERNET" />
5+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
56
<application
67
android:name=".di.HustleApplication"
78
android:allowBackup="true"
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package com.cornellappdev.hustle.ui.components.general
2+
3+
import androidx.compose.foundation.layout.Row
4+
import androidx.compose.foundation.layout.Spacer
5+
import androidx.compose.foundation.layout.fillMaxWidth
6+
import androidx.compose.foundation.layout.padding
7+
import androidx.compose.foundation.layout.width
8+
import androidx.compose.material3.Card
9+
import androidx.compose.material3.CardDefaults
10+
import androidx.compose.material3.Icon
11+
import androidx.compose.material3.IconButton
12+
import androidx.compose.material3.MaterialTheme
13+
import androidx.compose.material3.Text
14+
import androidx.compose.runtime.Composable
15+
import androidx.compose.ui.Alignment
16+
import androidx.compose.ui.Modifier
17+
import androidx.compose.ui.res.painterResource
18+
import androidx.compose.ui.tooling.preview.Preview
19+
import androidx.compose.ui.unit.dp
20+
import com.cornellappdev.hustle.R
21+
22+
@Composable
23+
fun ErrorMessage(
24+
message: String,
25+
onDismiss: () -> Unit,
26+
modifier: Modifier = Modifier
27+
) {
28+
Card(
29+
modifier = modifier.fillMaxWidth(),
30+
colors = CardDefaults.cardColors(
31+
containerColor = MaterialTheme.colorScheme.errorContainer
32+
)
33+
) {
34+
Row(
35+
modifier = Modifier.padding(16.dp),
36+
verticalAlignment = Alignment.CenterVertically
37+
) {
38+
Icon(
39+
painter = painterResource(id = R.drawable.ic_warning),
40+
contentDescription = null,
41+
tint = MaterialTheme.colorScheme.onErrorContainer
42+
)
43+
44+
Spacer(modifier = Modifier.width(8.dp))
45+
46+
Text(
47+
text = message,
48+
style = MaterialTheme.typography.bodyMedium,
49+
color = MaterialTheme.colorScheme.onErrorContainer,
50+
modifier = Modifier.weight(1f)
51+
)
52+
53+
IconButton(onClick = onDismiss) {
54+
Icon(
55+
painter = painterResource(id = R.drawable.ic_close),
56+
contentDescription = "Dismiss",
57+
tint = MaterialTheme.colorScheme.onErrorContainer
58+
)
59+
}
60+
}
61+
}
62+
}
63+
64+
@Preview(showBackground = true)
65+
@Composable
66+
private fun ErrorMessagePreview() {
67+
ErrorMessage(
68+
message = "Sign in with your Cornell email",
69+
onDismiss = {}
70+
)
71+
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package com.cornellappdev.hustle.ui.components.onboarding
2+
3+
import androidx.compose.foundation.BorderStroke
4+
import androidx.compose.foundation.layout.Arrangement
5+
import androidx.compose.foundation.layout.Row
6+
import androidx.compose.foundation.layout.fillMaxWidth
7+
import androidx.compose.foundation.layout.height
8+
import androidx.compose.foundation.layout.size
9+
import androidx.compose.material3.ButtonDefaults
10+
import androidx.compose.material3.CircularProgressIndicator
11+
import androidx.compose.material3.Icon
12+
import androidx.compose.material3.OutlinedButton
13+
import androidx.compose.material3.Text
14+
import androidx.compose.runtime.Composable
15+
import androidx.compose.ui.Alignment
16+
import androidx.compose.ui.Modifier
17+
import androidx.compose.ui.graphics.Color
18+
import androidx.compose.ui.res.painterResource
19+
import androidx.compose.ui.tooling.preview.Preview
20+
import androidx.compose.ui.unit.dp
21+
import com.cornellappdev.hustle.R
22+
23+
@Composable
24+
fun GoogleSignInButton(
25+
onClick: () -> Unit,
26+
modifier: Modifier = Modifier,
27+
isLoading: Boolean = false
28+
) {
29+
OutlinedButton(
30+
onClick = onClick,
31+
enabled = !isLoading,
32+
modifier = modifier
33+
.fillMaxWidth()
34+
.height(48.dp),
35+
colors = ButtonDefaults.outlinedButtonColors(
36+
containerColor = Color.White,
37+
contentColor = Color.Black
38+
),
39+
border = BorderStroke(1.dp, Color.Gray.copy(alpha = 0.3f))
40+
) {
41+
Row(
42+
verticalAlignment = Alignment.CenterVertically,
43+
horizontalArrangement = Arrangement.spacedBy(12.dp)
44+
) {
45+
if (isLoading) {
46+
CircularProgressIndicator(
47+
modifier = Modifier.size(20.dp),
48+
strokeWidth = 2.dp
49+
)
50+
} else {
51+
Icon(
52+
painter = painterResource(id = R.drawable.ic_google),
53+
contentDescription = "Google Logo",
54+
modifier = Modifier.size(20.dp),
55+
tint = Color.Unspecified
56+
)
57+
}
58+
59+
Text(
60+
text = if (isLoading) "Signing in..." else "Continue with Google",
61+
)
62+
}
63+
}
64+
}
65+
66+
@Preview(showBackground = true)
67+
@Composable
68+
private fun GoogleSignInButtonPreview() {
69+
GoogleSignInButton(onClick = {}, isLoading = false)
70+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="960"
5+
android:viewportHeight="960">
6+
<path
7+
android:pathData="m256,760 l-56,-56 224,-224 -224,-224 56,-56 224,224 224,-224 56,56 -224,224 224,224 -56,56 -224,-224 -224,224Z"
8+
android:fillColor="#e3e3e3"/>
9+
</vector>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="48dp"
3+
android:height="48dp"
4+
android:viewportWidth="48"
5+
android:viewportHeight="48">
6+
<path
7+
android:pathData="M43.611,20.083H42V20H24v8h11.303c-1.649,4.657 -6.08,8 -11.303,8c-6.627,0 -12,-5.373 -12,-12c0,-6.627 5.373,-12 12,-12c3.059,0 5.842,1.154 7.961,3.039l5.657,-5.657C34.046,6.053 29.268,4 24,4C12.955,4 4,12.955 4,24c0,11.045 8.955,20 20,20c11.045,0 20,-8.955 20,-20C44,22.659 43.862,21.35 43.611,20.083z"
8+
android:fillColor="#FFC107"/>
9+
<path
10+
android:pathData="M6.306,14.691l6.571,4.819C14.655,15.108 18.961,12 24,12c3.059,0 5.842,1.154 7.961,3.039l5.657,-5.657C34.046,6.053 29.268,4 24,4C16.318,4 9.656,8.337 6.306,14.691z"
11+
android:fillColor="#FF3D00"/>
12+
<path
13+
android:pathData="M24,44c5.166,0 9.86,-1.977 13.409,-5.192l-6.19,-5.238C29.211,35.091 26.715,36 24,36c-5.202,0 -9.619,-3.317 -11.283,-7.946l-6.522,5.025C9.505,39.556 16.227,44 24,44z"
14+
android:fillColor="#4CAF50"/>
15+
<path
16+
android:pathData="M43.611,20.083H42V20H24v8h11.303c-0.792,2.237 -2.231,4.166 -4.087,5.571c0.001,-0.001 0.002,-0.001 0.003,-0.002l6.19,5.238C36.971,39.205 44,34 44,24C44,22.659 43.862,21.35 43.611,20.083z"
17+
android:fillColor="#1976D2"/>
18+
</vector>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="24"
5+
android:viewportHeight="24">
6+
<group>
7+
<clip-path
8+
android:pathData="M0,0h24v24h-24z"/>
9+
<path
10+
android:pathData="M4,21V9L12,3L20,9V21H14V14H10V21H4Z"
11+
android:fillColor="#469110"/>
12+
</group>
13+
</vector>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="20dp"
3+
android:height="16dp"
4+
android:viewportWidth="20"
5+
android:viewportHeight="16">
6+
<path
7+
android:pathData="M2,16C1.45,16 0.979,15.804 0.587,15.413C0.196,15.021 0,14.55 0,14V2C0,1.45 0.196,0.979 0.587,0.587C0.979,0.196 1.45,0 2,0H18C18.55,0 19.021,0.196 19.413,0.587C19.804,0.979 20,1.45 20,2V14C20,14.55 19.804,15.021 19.413,15.413C19.021,15.804 18.55,16 18,16H2ZM10,9L2,4V14H18V4L10,9ZM10,7L18,2H2L10,7ZM2,4V2V14V4Z"
8+
android:fillColor="#636161"/>
9+
</vector>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="16dp"
3+
android:height="16dp"
4+
android:viewportWidth="16"
5+
android:viewportHeight="16">
6+
<path
7+
android:pathData="M8,8C6.9,8 5.958,7.608 5.175,6.825C4.392,6.042 4,5.1 4,4C4,2.9 4.392,1.958 5.175,1.175C5.958,0.392 6.9,0 8,0C9.1,0 10.042,0.392 10.825,1.175C11.608,1.958 12,2.9 12,4C12,5.1 11.608,6.042 10.825,6.825C10.042,7.608 9.1,8 8,8ZM0,16V13.2C0,12.633 0.146,12.113 0.438,11.637C0.729,11.163 1.117,10.8 1.6,10.55C2.633,10.033 3.683,9.646 4.75,9.387C5.817,9.129 6.9,9 8,9C9.1,9 10.183,9.129 11.25,9.387C12.317,9.646 13.367,10.033 14.4,10.55C14.883,10.8 15.271,11.163 15.563,11.637C15.854,12.113 16,12.633 16,13.2V16H0ZM2,14H14V13.2C14,13.017 13.954,12.85 13.863,12.7C13.771,12.55 13.65,12.433 13.5,12.35C12.6,11.9 11.692,11.563 10.775,11.337C9.858,11.113 8.933,11 8,11C7.067,11 6.142,11.113 5.225,11.337C4.308,11.563 3.4,11.9 2.5,12.35C2.35,12.433 2.229,12.55 2.138,12.7C2.046,12.85 2,13.017 2,13.2V14ZM8,6C8.55,6 9.021,5.804 9.413,5.412C9.804,5.021 10,4.55 10,4C10,3.45 9.804,2.979 9.413,2.588C9.021,2.196 8.55,2 8,2C7.45,2 6.979,2.196 6.588,2.588C6.196,2.979 6,3.45 6,4C6,4.55 6.196,5.021 6.588,5.412C6.979,5.804 7.45,6 8,6Z"
8+
android:fillColor="#636161"/>
9+
</vector>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="960"
5+
android:viewportHeight="960">
6+
<path
7+
android:pathData="m40,840 l440,-760 440,760L40,840ZM480,720q17,0 28.5,-11.5T520,680q0,-17 -11.5,-28.5T480,640q-17,0 -28.5,11.5T440,680q0,17 11.5,28.5T480,720ZM440,600h80v-200h-80v200Z"
8+
android:fillColor="#e3e3e3"/>
9+
</vector>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
<resources>
22
<string name="app_name">Hustle</string>
3+
<string name="default_web_client_id">1054767037583-oh008pkkqev5veggoa896b8lj3e4hd86.apps.googleusercontent.com</string>
34
</resources>

0 commit comments

Comments
 (0)