diff --git a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/HomeFragment.kt b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/HomeFragment.kt index ed4a314e..2322f2de 100644 --- a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/HomeFragment.kt +++ b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/HomeFragment.kt @@ -153,10 +153,12 @@ class HomeFragment : Fragment() { val deviceID = OAuth2NetworkManager(mActivity).getDeviceId() val bearerToken = "Bearer " + sp.getString(getString(R.string.access_token), "").toString() + val isLoggedIn = !sp.getBoolean(mActivity.getString(R.string.guest_mode), false) + lifecycleScope.launch(Dispatchers.Default) { // set adapter if it is null if (binding.homeCellsRv.adapter == null) { - homepageViewModel.populateHomePageCells(studentLife, bearerToken, deviceID) + homepageViewModel.populateHomePageCells(studentLife, isLoggedIn, bearerToken, deviceID) withContext(Dispatchers.Main) { binding.homeCellsRv.adapter = HomeAdapter(homepageViewModel) binding.homeCellsRv.visibility = View.INVISIBLE @@ -164,7 +166,8 @@ class HomeFragment : Fragment() { binding.homeRefreshLayout.isRefreshing = false } } else { // otherwise, call updateHomePageCells which only updates the cells that are changed - val updatedIndices = homepageViewModel.updateHomePageCells(studentLife, bearerToken, deviceID) + val updatedIndices = homepageViewModel.updateHomePageCells(studentLife, isLoggedIn, + bearerToken, deviceID) withContext(Dispatchers.Main) { updatedIndices.forEach { pos -> binding.homeCellsRv.adapter!!.notifyItemChanged(pos) diff --git a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/LoginFragment.kt b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/LoginFragment.kt index b3c81189..a63beeb9 100644 --- a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/LoginFragment.kt +++ b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/LoginFragment.kt @@ -63,6 +63,9 @@ class LoginFragment : Fragment() { editor.remove(getString(R.string.pennkey)) editor.remove(getString(R.string.access_token)) editor.remove(getString(R.string.accountID)) + editor.putString(getString(R.string.access_token), "") + editor.putString(getString(R.string.refresh_token), "") + editor.putString(getString(R.string.expires_in), "") editor.putBoolean(getString(R.string.guest_mode), true) editor.apply() mActivity.startHomeFragment() diff --git a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/api/OAuth2NetworkManager.kt b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/api/OAuth2NetworkManager.kt index 7834dad0..ef0486fe 100644 --- a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/api/OAuth2NetworkManager.kt +++ b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/api/OAuth2NetworkManager.kt @@ -5,7 +5,6 @@ import android.provider.Settings import android.util.Log import androidx.lifecycle.lifecycleScope import com.google.firebase.crashlytics.FirebaseCrashlytics - import com.pennapps.labs.pennmobile.BuildConfig import com.pennapps.labs.pennmobile.MainActivity import com.pennapps.labs.pennmobile.R @@ -29,6 +28,14 @@ class OAuth2NetworkManager(private var mActivity: MainActivity) { @Synchronized fun getAccessToken(function: () -> Unit) { + // if guest mode, then just do network request dangerously(TEMPORARY FIX, PLEASE DO SOMETHING + // ABOUT THIS IN FUTURE) + val guestMode = sp.getBoolean(mActivity.getString(R.string.guest_mode), false) + if (guestMode) { + function.invoke() + return + } + mActivity.lifecycleScope.launch { val tokenMutex = mActivity.tokenMutex tokenMutex.lock() diff --git a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/classes/HomepageViewModel.kt b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/classes/HomepageViewModel.kt index 560426d1..56b93b94 100644 --- a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/classes/HomepageViewModel.kt +++ b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/classes/HomepageViewModel.kt @@ -104,10 +104,10 @@ class HomepageViewModel : HomepageDataModel, ViewModel() { * Returns a list of updated cell positions. */ @Synchronized - fun updateHomePageCells(studentLife: StudentLife, bearerToken: String, + fun updateHomePageCells(studentLife: StudentLife, isLoggedIn: Boolean, bearerToken: String, deviceID: String) : List { val prevList = homepageCells.toList() - populateHomePageCells(studentLife, bearerToken, deviceID) + populateHomePageCells(studentLife, isLoggedIn, bearerToken, deviceID) val updatedIndices = mutableListOf() @@ -128,9 +128,8 @@ class HomepageViewModel : HomepageDataModel, ViewModel() { * This function requires a correct (non-expired) bearerToken!! */ @Synchronized - fun populateHomePageCells(studentLife: StudentLife, bearerToken: String, deviceID: String) { - val isLoggedIn = bearerToken != "Bearer " - + fun populateHomePageCells(studentLife: StudentLife, + isLoggedIn: Boolean, bearerToken: String, deviceID: String) { if (isLoggedIn) { val latch = CountDownLatch(NUM_CELLS_LOGGED_IN) getPolls(studentLife, bearerToken, deviceID, latch)