Skip to content

Commit

Permalink
Merge pull request #23 from batshalregmi/trent-firebase
Browse files Browse the repository at this point in the history
Trent firebase
  • Loading branch information
tdoiron0 authored Apr 9, 2024
2 parents f18cb53 + 8cd689a commit 95a0680
Show file tree
Hide file tree
Showing 34 changed files with 980 additions and 582 deletions.
5 changes: 5 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
plugins {
alias(libs.plugins.androidApplication)
id 'com.google.gms.google-services'
}

android {
Expand Down Expand Up @@ -45,6 +46,10 @@ dependencies {
testImplementation libs.junit
androidTestImplementation libs.ext.junit
androidTestImplementation libs.espresso.core
implementation platform("com.google.firebase:firebase-bom:32.8.0")
implementation("com.google.firebase:firebase-database")
implementation 'com.google.firebase:firebase-analytics'
implementation "com.google.firebase:firebase-auth"

def room_version = "2.6.1"
implementation "androidx.room:room-runtime:$room_version"
Expand Down
29 changes: 29 additions & 0 deletions app/google-services.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"project_info": {
"project_number": "808515235747",
"project_id": "cs2340-spotify-wrapped-2e02f",
"storage_bucket": "cs2340-spotify-wrapped-2e02f.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:808515235747:android:d86d46bd9d94ae4f277416",
"android_client_info": {
"package_name": "com.group3.spotifywrapped"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyBKBzlAz70yBwn_mqm4_1R7R0rmgaPfdWU"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
}
28 changes: 8 additions & 20 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,16 @@
android:theme="@style/Theme.Spotifywrapped"
tools:targetApi="31">
<activity
android:name=".SummaryView.SummaryActivity"
android:name=".summary.SummarySelectorActivity"
android:exported="true" />
<activity
android:name=".LoginActivity"
android:name=".summary.SummaryActivity"
android:exported="true" />
<activity
android:name=".CoreAppViews.SignUpActivity"
android:exported="true"/>
<activity
android:name=".CoreAppViews.LoginActivity"
android:exported="true">
<intent-filter>
<data
Expand All @@ -30,28 +36,10 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SignUpActivity"
android:exported="true" />
<activity
android:name=".TestActivity"
android:exported="true">
<intent-filter>
<data
android:host="auth"
android:scheme="spotifywrapped" />
</intent-filter>
</activity>
<activity
android:name=".DevStartActivity"
android:exported="true">
</activity>
<activity android:name=".CoreAppViews.SettingsActivity"
android:exported="true">
</activity>
<activity android:name=".CoreAppViews.MainPageActivity"
android:exported="true">
</activity>
</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.group3.spotifywrapped;
package com.group3.spotifywrapped.CoreAppViews;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.room.Room;

import android.content.Intent;
import android.net.Uri;
Expand All @@ -10,19 +10,32 @@
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import java.util.List;

import com.group3.spotifywrapped.CoreAppViews.MainPageActivity;
import com.group3.spotifywrapped.database.AppDatabase;
import android.widget.Toast;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.group3.spotifywrapped.Foo;
import com.group3.spotifywrapped.R;
import com.group3.spotifywrapped.database.FirebaseHelper;
import com.group3.spotifywrapped.database.User;
import com.group3.spotifywrapped.database.UserDao;

import com.group3.spotifywrapped.summary.SummarySelectorActivity;
import com.spotify.sdk.android.auth.AuthorizationClient;
import com.spotify.sdk.android.auth.AuthorizationRequest;
import com.spotify.sdk.android.auth.AuthorizationResponse;

public class LoginActivity extends AppCompatActivity {
private static final String TAG = "LoginActivity";

public static final String CLIENT_ID = "9e3e12a5d1424f068a20c6db49de005c";
public static final String REDIRECT_URI = "spotifywrapped://auth";
public static final String[] SCOPES = new String[] {
Expand All @@ -35,10 +48,10 @@ public class LoginActivity extends AppCompatActivity {
public static final int AUTH_TOKEN_REQUEST_CODE = 0;
public static final int AUTH_CODE_REQUEST_CODE = 1;

public static User activeUser;
public static AtomicReference<DatabaseReference> activeUser = new AtomicReference<>(null);
public static String token;

private UserDao userDao;
private boolean tokenRecieved = false;
private AtomicBoolean tokenRecieved = new AtomicBoolean(false);

@Override
protected void onCreate(Bundle savedInstanceState) {
Expand All @@ -47,42 +60,40 @@ protected void onCreate(Bundle savedInstanceState) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);

EditText username = findViewById(R.id.username);
EditText password = findViewById(R.id.password);
EditText usernameTextField = findViewById(R.id.username);
EditText passwordTextField = findViewById(R.id.password);
Button loginButton = findViewById(R.id.loginButton);
Button signUpButton = findViewById(R.id.signUpButton);

AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "local-database")
.fallbackToDestructiveMigration()
.build();
userDao = db.userDao();

//addTestUser();

loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Thread loginThread = new Thread(new Runnable() {
if (passwordTextField.getText().toString().length() < 6) {
Toast.makeText(LoginActivity.this, "Password must be 6 characters long", Toast.LENGTH_SHORT).show();
return;
}
FirebaseAuth mAuth = FirebaseAuth.getInstance();
mAuth.signInWithEmailAndPassword(usernameTextField.getText().toString(), passwordTextField.getText().toString()).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void run() {
List<User> usersFound = userDao.findByLoginInfo(username.getText().toString(), password.getText().toString());
if (!usersFound.isEmpty()) {
activeUser = usersFound.get(0);
getToken();
while (!tokenRecieved);
Log.d("LoginActivity", "Token recieved: " + activeUser.sToken);
//switch to settings screen
Intent i = new Intent(view.getContext(), MainPageActivity.class);
startActivity(i);
} else {
Log.e("LoginActivity", "Login credentials invalid");
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
activeUser = FirebaseHelper.getUserByFirebaseUser();
getToken();
while(!tokenRecieved.get());
Intent i = new Intent(LoginActivity.this, SummarySelectorActivity.class);
startActivity(i);
}
});
thread.start();
}
}
});
loginThread.start();
}
});

Button signUpButton = findViewById(R.id.signUpButton);
signUpButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Expand Down Expand Up @@ -116,24 +127,8 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (AUTH_TOKEN_REQUEST_CODE == requestCode) {
//Log.d("LoginActivity", "Response: " + response.getAccessToken());
activeUser.sToken = response.getAccessToken();
tokenRecieved = true;
token = response.getAccessToken();
tokenRecieved.set(true);
}
}

private void addTestUser() {
User trentUser = new User(
"tdoiron0",
"1234",
"[email protected]",
"Trent Doiron"
);
Thread insertUserThread = new Thread(new Runnable() {
@Override
public void run() {
userDao.insert(trentUser);
}
});
insertUserThread.start();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import androidx.appcompat.app.AppCompatActivity;

import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.group3.spotifywrapped.LoginActivity;
import com.group3.spotifywrapped.R;

public class MainPageActivity extends AppCompatActivity {
Expand All @@ -18,9 +17,9 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_postlogin);
TextView welcomeMessage = findViewById(R.id.welcomeMessage);
String username = LoginActivity.activeUser.username;
//String username = LoginActivity.activeUser.username;
String message = (String) welcomeMessage.getText();
welcomeMessage.setText(message.replace("{{USER}}", username));
//welcomeMessage.setText(message.replace("{{USER}}", username));

BottomNavigationView bottomNavigationView = findViewById(R.id.bottomNavigation);
bottomNavigationView.setOnNavigationItemSelectedListener(item -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import androidx.appcompat.app.AppCompatActivity;

import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.group3.spotifywrapped.LoginActivity;
import com.group3.spotifywrapped.R;
import com.group3.spotifywrapped.utils.SpotifyApiHelper;

Expand Down Expand Up @@ -44,7 +43,7 @@ protected void onCreate(Bundle savedInstanceState) {
});

ImageView profilePicture = findViewById(R.id.userProfilePicture);
JSONObject userResponse = SpotifyApiHelper.callSpotifyApi("/me", LoginActivity.activeUser.sToken, "GET");
JSONObject userResponse = SpotifyApiHelper.callSpotifyApi("/me", LoginActivity.token, "GET");
String imageUrl = null;
Log.d("SettingsActivity", "User response: " + userResponse.toString());
try {
Expand Down Expand Up @@ -78,6 +77,6 @@ protected void onCreate(Bundle savedInstanceState) {
profilePicture.setImageDrawable(image);
}
TextView username = findViewById(R.id.usernameUnderPicture);
username.setText(LoginActivity.activeUser.username);
//username.setText(LoginActivity.activeUser.username);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package com.group3.spotifywrapped.CoreAppViews;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.group3.spotifywrapped.R;
import com.group3.spotifywrapped.database.FirebaseHelper;
import com.group3.spotifywrapped.database.User;
import com.group3.spotifywrapped.summary.SummarySelectorActivity;


public class SignUpActivity extends AppCompatActivity {
public static final String TAG = "SignUpActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sign_up);

EditText username = findViewById(R.id.username);
EditText password = findViewById(R.id.password);
EditText confirmPassword = findViewById(R.id.confirmPassword);
EditText email = findViewById(R.id.email);
EditText name = findViewById(R.id.name);
Button createAccountButton = findViewById(R.id.createAccount);

createAccountButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FirebaseAuth.getInstance().createUserWithEmailAndPassword(email.getText().toString(), password.getText().toString()).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
User newUser = new User();
newUser.userUid = FirebaseAuth.getInstance().getUid();
newUser.username = username.getText().toString();
newUser.name = name.getText().toString();
LoginActivity.activeUser.set(FirebaseHelper.addUser(newUser));
Intent i = new Intent(SignUpActivity.this, SummarySelectorActivity.class);
startActivity(i);
} else {
Toast.makeText(SignUpActivity.this, "Failed to sign up", Toast.LENGTH_SHORT).show();
}
}
});
}
});
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
package com.group3.spotifywrapped;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.util.Log;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

import java.util.HashMap;
import com.group3.spotifywrapped.database.Artist;
import com.group3.spotifywrapped.database.Track;

import java.util.List;
import java.util.Map;

public class DevStartActivity extends AppCompatActivity {
Expand Down
15 changes: 15 additions & 0 deletions app/src/main/java/com/group3/spotifywrapped/Foo.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.group3.spotifywrapped;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class Foo {
public int num;
public String str = "abcd";

public Foo(int num, String str) {
this.num = num;
this.str = str;
}
}
Loading

0 comments on commit 95a0680

Please sign in to comment.