Skip to content

Commit

Permalink
some backend calls
Browse files Browse the repository at this point in the history
  • Loading branch information
trinif committed Apr 26, 2024
1 parent 56fe15b commit 19cf976
Show file tree
Hide file tree
Showing 11 changed files with 128 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ class SublesseeDetailsFragment (var dataModel: SublesseeViewModel, var position:
interestedButton = binding.interestedSubletButton

saveButton.setOnClickListener {
saveButton.text = "Saved"
/* saveButton.text = "Saved"
var savedProperties = sharedPreferences.getStringSet("sublet_saved", HashSet<String>())!!.toSet()
var newSavedProperties = HashSet<String>()
newSavedProperties.addAll(savedProperties)
Expand All @@ -97,7 +97,8 @@ class SublesseeDetailsFragment (var dataModel: SublesseeViewModel, var position:
apply()
}
dataModel.addSavedSublet(sublet)
dataModel.addSavedSublet(sublet) */
dataModel.addSavedSublet(mActivity, sublet.id!!)
Toast.makeText(context, "This property has been saved", Toast.LENGTH_LONG).show()
mActivity.supportFragmentManager.beginTransaction()
.replace(((view as ViewGroup).parent as View).id, SublesseeSavedFragment())
Expand All @@ -114,4 +115,9 @@ class SublesseeDetailsFragment (var dataModel: SublesseeViewModel, var position:
.commit()
}
}

override fun onDestroy() {
super.onDestroy()
_binding = null
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,9 @@ class SublesseeInterestForm (): Fragment() {
.commit()
}
}

override fun onDestroy() {
super.onDestroy()
_binding = null
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import com.pennapps.labs.pennmobile.classes.SublesseeViewModel
import com.pennapps.labs.pennmobile.databinding.FragmentSublesseeInterestFormBinding
import com.pennapps.labs.pennmobile.databinding.FragmentSublesseeSavedBinding

class SublesseeSavedFragment : Fragment() {
class SublesseeSavedFragment() : Fragment() {

//create binding
private var _binding : FragmentSublesseeSavedBinding? = null
Expand Down Expand Up @@ -68,4 +68,9 @@ class SublesseeSavedFragment : Fragment() {
.commit()
}
}

override fun onDestroy() {
super.onDestroy()
_binding = null
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ class SublesseeSavedListingsHolderFragment (): Fragment() {

dataModel = SublesseeViewModel(mActivity, mStudentLife)
dataModel.listSublets(mActivity)
dataModel.getFavoriteSublets(mActivity)

val bundle = Bundle()
}
Expand All @@ -68,11 +69,11 @@ class SublesseeSavedListingsHolderFragment (): Fragment() {
sublettingRecyclerView.layoutManager = newLayoutManager
swipeRefreshLayout = binding.sublesseeSavedRefreshLayout

sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mActivity)
/* sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mActivity)
val savedProperties = sharedPreferences.getStringSet("sublet_saved", HashSet<String>())
propertiesList = savedProperties!!.toList()
propertiesList = savedProperties!!.toList() */

myAdapter = SublesseeSavedAdapter(dataModel, propertiesList)
myAdapter = SublesseeSavedAdapter(dataModel)
dataModel.savedSublets.observe(viewLifecycleOwner) { sublets ->
sublettingList = sublets
Log.i("sublet saved", sublettingList.size.toString())
Expand All @@ -85,4 +86,9 @@ class SublesseeSavedListingsHolderFragment (): Fragment() {

}
}

override fun onDestroy() {
super.onDestroy()
_binding = null
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,9 @@ class SubletteeFragment : Fragment() {
}
}

override fun onDestroy() {
super.onDestroy()
_binding = null
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -171,4 +171,9 @@ class SubletteeMarketplace : Fragment() {


}

override fun onDestroy() {
super.onDestroy()
_binding = null
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ import com.pennapps.labs.pennmobile.classes.SublesseeViewModel
import com.pennapps.labs.pennmobile.classes.Sublet
import com.pennapps.labs.pennmobile.classes.SublettingModel

class SublesseeSavedAdapter(var dataModel: SublesseeViewModel, var propertiesList: List<String>):
//for the listview for the saved sublets
class SublesseeSavedAdapter(var dataModel: SublesseeViewModel):
RecyclerView.Adapter<SublesseeSavedAdapter.SublesseeSavedItemViewHolder>() {

private lateinit var mContext: Context
Expand All @@ -46,8 +47,7 @@ class SublesseeSavedAdapter(var dataModel: SublesseeViewModel, var propertiesLis

override fun onBindViewHolder(holder: SublesseeSavedItemViewHolder, position: Int) {

val subletId = propertiesList[position]
/* val actualSublet = dataModel.getSubletById(subletId, mActivity)
val actualSublet = dataModel.getSavedSublet(position)

holder.listingTitle.text = actualSublet.title
var price = "$" + actualSublet.price.toString()
Expand All @@ -60,11 +60,7 @@ class SublesseeSavedAdapter(var dataModel: SublesseeViewModel, var propertiesLis
append(actualSublet.startDate)
append(" - ")
append(actualSublet.endDate)
} */

holder.listingTitle.text = subletId


}

holder.itemView.setOnClickListener {
mActivity.supportFragmentManager.beginTransaction()
Expand All @@ -76,6 +72,10 @@ class SublesseeSavedAdapter(var dataModel: SublesseeViewModel, var propertiesLis
}

override fun getItemCount(): Int {
return propertiesList.size
if (dataModel.getSavedSubletsList() == null) {
return 0
} else {
return dataModel.getSavedSubletsList()!!.size
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ import com.pennapps.labs.pennmobile.SublesseeSavedListingsHolderFragment
import com.pennapps.labs.pennmobile.SubletteeFragment
import com.pennapps.labs.pennmobile.classes.SublesseeViewModel

//import com.pennapps.labs.pennmobile.SubletterFragment

class SublesseeSavedPagerAdapter(fragment: Fragment) : FragmentStateAdapter(fragment) {
override fun getItemCount(): Int = 2
override fun createFragment(position: Int): Fragment {
return if (position == 0) {
//actual saved listings
SublesseeSavedListingsHolderFragment()
} else {
//applied, offers
SublesseeAppliedListingsHolder()
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import com.pennapps.labs.pennmobile.classes.Post;
import com.pennapps.labs.pennmobile.classes.SaveAccountResponse;
import com.pennapps.labs.pennmobile.classes.Sublet;
import com.pennapps.labs.pennmobile.classes.SubletRequest;
import com.pennapps.labs.pennmobile.classes.Venue;
import com.pennapps.labs.pennmobile.classes.WhartonStatus;

Expand Down Expand Up @@ -258,4 +259,17 @@ void deleteSublet(
Observable<List<Sublet>> getSublets(
@Header("Authorization") String bearerToken);

@Headers({"Content-Type: application/json"})
@POST("/sublet/properties/{sublet_id}/favorites")
void addFavoriteSublet(
@Header("Authorization") String bearerToken,
@Body SubletRequest sublets,
@Path("sublet_id") int id,
Callback<Sublet> callback);

@Headers({"Content-Type: application/json"})
@GET("/sublet/favorites")
Observable<List<Integer>> getSubletFavorites(
@Header("Authorization") String bearerToken);

}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.update
import retrofit.Callback
import retrofit.ResponseCallback
import retrofit.RetrofitError
import retrofit.client.Response
import java.util.concurrent.CountDownLatch
Expand All @@ -23,11 +24,16 @@ class SublesseeViewModel(private val activity: Activity, private val studentLife

var sublettingList = MutableLiveData<ArrayList<Sublet>>()
var savedSublets = MutableLiveData<ArrayList<Sublet>>()
var savedSubletIds = hashSetOf<Int>()

fun getSublet(position : Int) : Sublet {
return sublettingList.value?.get(position) ?: Sublet() // Provide a default value if needed
}

fun getSavedSublet(position : Int) : Sublet {
return savedSublets.value?.get(position) ?: Sublet() // Provide a default value if needed
}

/* fun getSubletById(id: String, mActivity: MainActivity): Sublet {
val context = activity.applicationContext
val sp = PreferenceManager.getDefaultSharedPreferences(activity)
Expand Down Expand Up @@ -67,14 +73,15 @@ class SublesseeViewModel(private val activity: Activity, private val studentLife
return sublettingList.value
}

fun getSavedSubletsList(): ArrayList<Sublet>? {
return savedSublets.value
}

fun listSublets(mActivity: MainActivity) {

val context = activity.applicationContext
val sp = PreferenceManager.getDefaultSharedPreferences(activity)
//var sublettingList = ArrayList<Sublet>()
//var fitnessRoomsList = ArrayList<FitnessRoom>()

//for bearer token- not necessary when listing the sublets
OAuth2NetworkManager(mActivity).getAccessToken {

val bearerToken =
Expand All @@ -97,18 +104,63 @@ class SublesseeViewModel(private val activity: Activity, private val studentLife
Log.i("sublets", getSublettingList()?.size.toString())
}

fun getSavedSublets(): ArrayList<Sublet>? {
/* fun getSavedSublets(): ArrayList<Sublet>? {
return savedSublets.value
}
fun getSavedSublet(position : Int) : Sublet {
return savedSublets.value?.get(position) ?: Sublet() // Provide a default value if needed
} */

fun addSavedSublet(mActivity: MainActivity, id: Int) {
val context = activity.applicationContext
val sp = PreferenceManager.getDefaultSharedPreferences(activity)

savedSubletIds.add(id)

OAuth2NetworkManager(mActivity).getAccessToken {

val bearerToken =
"Bearer " + sp.getString(context.getString(R.string.access_token), "").toString()


studentLife.addFavoriteSublet(bearerToken, SubletRequest(ArrayList(savedSubletIds)), id, object : Callback<Sublet> {
override fun success(t: Sublet?, response: Response?) {
Log.i("Sublessee View Model", "sublet added")
}

override fun failure(error: RetrofitError?) {
Log.e("Sublessee View Model", "Error favoriting sublet $error", error)
Toast.makeText(activity, "An error has occurred. Please try again.", Toast.LENGTH_LONG).show()
}
})
}
}

fun addSavedSublet(s: Sublet) {
if (savedSublets.value == null) {
savedSublets.value = ArrayList<Sublet>()
fun getFavoriteSublets(mActivity: MainActivity) {

val context = activity.applicationContext
val sp = PreferenceManager.getDefaultSharedPreferences(activity)

OAuth2NetworkManager(mActivity).getAccessToken {

val bearerToken =
"Bearer " + sp.getString(context.getString(R.string.access_token), "").toString()

studentLife.getSubletFavorites(bearerToken).subscribe({ sublets ->
mActivity.runOnUiThread {
savedSublets.value = sublets as ArrayList<Sublet>
}
}, { throwable ->
mActivity.runOnUiThread {
Log.e(
"Sublessee Marketplace",
"Could not load saved Sublets",
throwable
)
}
})
}
savedSublets.value!!.add(s)
Log.i("sublets", getSavedSubletsList()?.size.toString())
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.pennapps.labs.pennmobile.classes

class SubletRequest(favoriteSublets: ArrayList<Int>) {
var sublets: ArrayList<Int> = favoriteSublets
}

0 comments on commit 19cf976

Please sign in to comment.