Skip to content
Open
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

arrayindexoutofbounds exception for some users

Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ import retrofit.client.Response

class FitnessPreferenceViewModel(
private val studentLife: StudentLife,
private val roomList: List<FitnessRoom>,
) : FitnessAdapterDataModel {
private val roomTot = roomList.size
private lateinit var roomList: List<FitnessRoom>
private var roomTot: Int = 0

// hashset of the favorite room ids
private val favoriteRooms: HashSet<Int> = hashSetOf()
Expand Down Expand Up @@ -120,4 +120,47 @@ class FitnessPreferenceViewModel(
}
}
}

fun getFitnessRooms(mActivity: MainActivity) {
try {
studentLife.fitnessRooms
.subscribe({ fitnessRooms ->
for (room in fitnessRooms) {
Log.i("Fitness Room${room.roomId}", "${room.roomName}")
}
val sortedRooms = fitnessRooms.sortedBy { it.roomName }
roomList = sortedRooms
roomTot = roomList.size

mActivity.runOnUiThread {
mActivity.mNetworkManager.getAccessToken {
val sp = PreferenceManager.getDefaultSharedPreferences(mActivity)
val context = mActivity.applicationContext
val bearerToken =
"Bearer " + sp.getString(context.getString(R.string.access_token), "").toString()

studentLife.getFitnessPreferences(bearerToken).subscribe({ favorites ->
mActivity.runOnUiThread {
for (roomId in favorites) {
addId(roomId)
}
updatePositionMap()
}
}, { throwable ->
mActivity.runOnUiThread {
// call setAdapters
Log.e(
"Pottruck Fragment",
"Could not load Fitness Preferences",
throwable,
)
}
})
}
}
})
} catch (e: Exception) {
e.printStackTrace()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package com.pennapps.labs.pennmobile.fitness.adapters

import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter
import com.pennapps.labs.pennmobile.gsr.fragments.PottruckFragment
import com.pennapps.labs.pennmobile.fitness.fragments.PottruckFragment

class FitnessPagerAdapter(
fragment: Fragment,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.pennapps.labs.pennmobile.gsr.fragments
package com.pennapps.labs.pennmobile.fitness.fragments

import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
Expand All @@ -11,7 +10,6 @@ import androidx.appcompat.widget.Toolbar
import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.preference.PreferenceManager
import androidx.recyclerview.widget.ConcatAdapter
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
Expand All @@ -25,8 +23,6 @@ import com.pennapps.labs.pennmobile.databinding.FragmentPottruckBinding
import com.pennapps.labs.pennmobile.fitness.FitnessPreferenceViewModel
import com.pennapps.labs.pennmobile.fitness.adapters.FitnessAdapter
import com.pennapps.labs.pennmobile.fitness.adapters.FitnessHeaderAdapter
import com.pennapps.labs.pennmobile.fitness.fragments.CloseListener
import com.pennapps.labs.pennmobile.fitness.fragments.FitnessPreferencesFragment
import com.pennapps.labs.pennmobile.isOnline
import com.pennapps.labs.pennmobile.utils.Utils

Expand All @@ -51,6 +47,7 @@ class PottruckFragment : Fragment() {
super.onCreate(savedInstanceState)
mStudentLife = MainActivity.studentLifeInstance
mActivity = activity as MainActivity
dataModel = FitnessPreferenceViewModel(mStudentLife)
}

override fun onCreateView(
Expand Down Expand Up @@ -81,68 +78,16 @@ class PottruckFragment : Fragment() {
swipeRefresh.setColorSchemeResources(R.color.color_accent, R.color.color_primary)
recyclerView.layoutManager =
LinearLayoutManager(mActivity, LinearLayoutManager.VERTICAL, false)
swipeRefresh.setOnRefreshListener { getFitnessRooms() }
swipeRefresh.setOnRefreshListener { dataModel.getFitnessRooms(mActivity) }

// populate the title/date of the app bar
initAppBar()

// populate recyclerview
getFitnessRooms()
}

private fun getFitnessRooms() {
// displays banner if not connected
if (!getConnected()) return

try {
mStudentLife.fitnessRooms
.subscribe({ fitnessRooms ->
for (room in fitnessRooms) {
Log.i("Fitness Room${room.roomId}", "${room.roomName}")
}
val sortedRooms = fitnessRooms.sortedBy { it.roomName }

dataModel = FitnessPreferenceViewModel(mStudentLife, sortedRooms)

mActivity.runOnUiThread {
mActivity.mNetworkManager.getAccessToken {
val sp = PreferenceManager.getDefaultSharedPreferences(mActivity)
val context = mActivity.applicationContext
val bearerToken =
"Bearer " + sp.getString(context.getString(R.string.access_token), "").toString()

mStudentLife.getFitnessPreferences(bearerToken).subscribe({ favorites ->
mActivity.runOnUiThread {
for (roomId in favorites) {
dataModel.addId(roomId)
}
dataModel.updatePositionMap()

setAdapters()
}
}, { throwable ->
mActivity.runOnUiThread {
// empty preferences
setAdapters()
Log.e(
"Pottruck Fragment",
"Could not load Fitness Preferences",
throwable,
)
}
})
}
}
}, {
Log.e("PottruckFragment", "Error getting fitness rooms", it)
mActivity.runOnUiThread {
Log.e("Fitness", "Could not load Pottruck page", it)
binding.loadingPanel.root.visibility = View.GONE
swipeRefresh.isRefreshing = false
}
})
} catch (e: Exception) {
e.printStackTrace()
if (getConnected()) {
dataModel.getFitnessRooms(mActivity)
// call setAdapters() after calling getFitnessRooms from data model
setAdapters()
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import androidx.preference.PreferenceManager
import com.pennapps.labs.pennmobile.MainActivity
import com.pennapps.labs.pennmobile.R
import com.pennapps.labs.pennmobile.components.dialog.CustomAlertDialogue
import com.pennapps.labs.pennmobile.gsr.fragments.PottruckFragment
import com.pennapps.labs.pennmobile.fitness.fragments.PottruckFragment
import com.pennapps.labs.pennmobile.home.fragments.NewsFragment
import com.pennapps.labs.pennmobile.showSneakerToast

Expand Down
Loading