Skip to content

Commit

Permalink
fix: Stop creation of multiple listeners. (#1091)
Browse files Browse the repository at this point in the history
  • Loading branch information
angmas1 authored and iamareebjamal committed Feb 17, 2019
1 parent 86e1e4b commit fb5683e
Show file tree
Hide file tree
Showing 7 changed files with 111 additions and 108 deletions.
Expand Up @@ -38,6 +38,12 @@ class AboutEventFragment : Fragment(), AppBarLayout.OnOffsetChangedListener {
val bundle = this.arguments
if (bundle != null)
id = bundle.getLong(EVENT_ID)

aboutEventViewModel.event
.nonNull()
.observe(this, Observer {
loadEvent(it)
})
}

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
Expand Down Expand Up @@ -66,12 +72,6 @@ class AboutEventFragment : Fragment(), AppBarLayout.OnOffsetChangedListener {

aboutEventViewModel.loadEvent(id)

aboutEventViewModel.event
.nonNull()
.observe(this, Observer {
loadEvent(it)
})

return rootView
}

Expand Down
Expand Up @@ -78,20 +78,6 @@ class EventDetailsFragment : Fragment() {
if (bundle != null) {
eventId = bundle.getLong(EVENT_ID, -1)
}
}

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
rootView = inflater.inflate(R.layout.fragment_event, container, false)
val thisActivity = activity
if (thisActivity is AppCompatActivity) {
thisActivity.supportActionBar?.title = ""
thisActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true)
}
setHasOptionsMenu(true)

eventViewModel.event
.nonNull()
Expand All @@ -100,10 +86,6 @@ class EventDetailsFragment : Fragment() {
eventShare = it
title = eventShare.name

rootView.buttonTickets.setOnClickListener {
loadTicketFragment()
}

if (eventShare.favorite) {
setFavoriteIcon(R.drawable.ic_baseline_favorite_white)
}
Expand All @@ -116,6 +98,24 @@ class EventDetailsFragment : Fragment() {

Timber.d("Fetched events of id %d", eventId)
})
}

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
rootView = inflater.inflate(R.layout.fragment_event, container, false)
val thisActivity = activity
if (thisActivity is AppCompatActivity) {
thisActivity.supportActionBar?.title = ""
thisActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true)
}
setHasOptionsMenu(true)

rootView.buttonTickets.setOnClickListener {
loadTicketFragment()
}

eventViewModel.error
.nonNull()
Expand Down
Expand Up @@ -46,6 +46,29 @@ class EventsFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
eventsRecyclerAdapter.setEventLayout(EVENTS)
val favoriteFabClickListener = object : FavoriteFabListener {
override fun onClick(event: Event, isFavorite: Boolean) {
val id = eventsRecyclerAdapter.getPos(event.id)
eventsViewModel.setFavorite(event.id, !isFavorite)
event.favorite = !event.favorite
eventsRecyclerAdapter.notifyItemChanged(id)
}
}
eventsRecyclerAdapter.setFavorite(favoriteFabClickListener)

eventsViewModel.events
.nonNull()
.observe(this, Observer {
eventsRecyclerAdapter.addAll(it)
eventsRecyclerAdapter.notifyDataSetChanged()
Timber.d("Fetched events of size %s", eventsRecyclerAdapter.itemCount)
})

eventsViewModel.error
.nonNull()
.observe(this, Observer {
Snackbar.make(eventsNestedScrollView, it, Snackbar.LENGTH_LONG).show()
})
}

override fun onCreateView(
Expand Down Expand Up @@ -80,24 +103,7 @@ class EventsFragment : Fragment() {
findNavController(rootView).navigate(R.id.eventDetailsFragment, bundle, getAnimFade())
}
}

val favoriteFabClickListener = object : FavoriteFabListener {
override fun onClick(event: Event, isFavorite: Boolean) {
val id = eventsRecyclerAdapter.getPos(event.id)
eventsViewModel.setFavorite(event.id, !isFavorite)
event.favorite = !event.favorite
eventsRecyclerAdapter.notifyItemChanged(id)
}
}
eventsRecyclerAdapter.setListener(recyclerViewClickListener)
eventsRecyclerAdapter.setFavorite(favoriteFabClickListener)
eventsViewModel.events
.nonNull()
.observe(this, Observer {
eventsRecyclerAdapter.addAll(it)
eventsRecyclerAdapter.notifyDataSetChanged()
Timber.d("Fetched events of size %s", eventsRecyclerAdapter.itemCount)
})

eventsViewModel.showShimmerEvents
.nonNull()
Expand All @@ -110,12 +116,6 @@ class EventsFragment : Fragment() {
rootView.shimmerEvents.isVisible = it
})

eventsViewModel.error
.nonNull()
.observe(this, Observer {
Snackbar.make(eventsNestedScrollView, it, Snackbar.LENGTH_LONG).show()
})

eventsViewModel.progress
.nonNull()
.observe(this, Observer {
Expand Down
Expand Up @@ -45,6 +45,21 @@ class OrderDetailsFragment : Fragment() {
}
}
ordersRecyclerAdapter.setOrderIdentifier(orderId)

orderDetailsViewModel.event
.nonNull()
.observe(this, Observer {
ordersRecyclerAdapter.setEvent(it)
ordersRecyclerAdapter.notifyDataSetChanged()
})

orderDetailsViewModel.attendees
.nonNull()
.observe(this, Observer {
ordersRecyclerAdapter.addAll(it)
ordersRecyclerAdapter.notifyDataSetChanged()
Timber.d("Fetched attendees of size %s", ordersRecyclerAdapter.itemCount)
})
}

override fun onCreateView(
Expand Down Expand Up @@ -75,27 +90,13 @@ class OrderDetailsFragment : Fragment() {
}

ordersRecyclerAdapter.setListener(eventDetailsListener)
orderDetailsViewModel.event
.nonNull()
.observe(this, Observer {
ordersRecyclerAdapter.setEvent(it)
ordersRecyclerAdapter.notifyDataSetChanged()
})

orderDetailsViewModel.progress
.nonNull()
.observe(this, Observer {
rootView.progressBar.isVisible = it
})

orderDetailsViewModel.attendees
.nonNull()
.observe(this, Observer {
ordersRecyclerAdapter.addAll(it)
ordersRecyclerAdapter.notifyDataSetChanged()
Timber.d("Fetched attendees of size %s", ordersRecyclerAdapter.itemCount)
})

orderDetailsViewModel.message
.nonNull()
.observe(this, Observer {
Expand Down
Expand Up @@ -34,6 +34,21 @@ class SocialLinksFragment : Fragment() {
if (bundle != null) {
id = bundle.getLong(EVENT_ID, -1)
}

socialLinksViewModel.socialLinks
.nonNull()
.observe(this, Observer {
socialLinksRecyclerAdapter.addAll(it)
handleVisibility(it)
socialLinksRecyclerAdapter.notifyDataSetChanged()
Timber.d("Fetched social-links of size %s", socialLinksRecyclerAdapter.itemCount)
})

socialLinksViewModel.error
.nonNull()
.observe(this, Observer {
Snackbar.make(socialLinksCoordinatorLayout, it, Snackbar.LENGTH_LONG).show()
})
}

override fun onCreateView(
Expand All @@ -52,21 +67,6 @@ class SocialLinksFragment : Fragment() {
rootView.socialLinksRecycler.adapter = socialLinksRecyclerAdapter
rootView.socialLinksRecycler.isNestedScrollingEnabled = false

socialLinksViewModel.socialLinks
.nonNull()
.observe(this, Observer {
socialLinksRecyclerAdapter.addAll(it)
handleVisibility(it)
socialLinksRecyclerAdapter.notifyDataSetChanged()
Timber.d("Fetched social-links of size %s", socialLinksRecyclerAdapter.itemCount)
})

socialLinksViewModel.error
.nonNull()
.observe(this, Observer {
Snackbar.make(socialLinksCoordinatorLayout, it, Snackbar.LENGTH_LONG).show()
})

socialLinksViewModel.progress
.nonNull()
.observe(this, Observer {
Expand Down
Expand Up @@ -56,6 +56,32 @@ class TicketsFragment : Fragment() {
currency = bundle.getString(CURRENCY, null)
}
ticketsRecyclerAdapter.setCurrency(currency)

val ticketSelectedListener = object : TicketSelectedListener {
override fun onSelected(ticketId: Int, quantity: Int) {
handleTicketSelect(ticketId, quantity)
}
}
ticketsRecyclerAdapter.setSelectListener(ticketSelectedListener)

ticketsViewModel.error
.nonNull()
.observe(this, Observer {
Snackbar.make(ticketsCoordinatorLayout, it, Snackbar.LENGTH_LONG).show()
})

ticketsViewModel.event
.nonNull()
.observe(this, Observer {
loadEventDetails(it)
})

ticketsViewModel.tickets
.nonNull()
.observe(this, Observer {
ticketsRecyclerAdapter.addAll(it)
ticketsRecyclerAdapter.notifyDataSetChanged()
})
}

override fun onCreateView(
Expand All @@ -69,12 +95,6 @@ class TicketsFragment : Fragment() {
activity?.supportActionBar?.title = "Ticket Details"
setHasOptionsMenu(true)

val ticketSelectedListener = object : TicketSelectedListener {
override fun onSelected(ticketId: Int, quantity: Int) {
handleTicketSelect(ticketId, quantity)
}
}
ticketsRecyclerAdapter.setSelectListener(ticketSelectedListener)
rootView.ticketsRecycler.layoutManager = LinearLayoutManager(activity)

rootView.ticketsRecycler.adapter = ticketsRecyclerAdapter
Expand All @@ -84,12 +104,6 @@ class TicketsFragment : Fragment() {
linearLayoutManager.orientation = RecyclerView.VERTICAL
rootView.ticketsRecycler.layoutManager = linearLayoutManager

ticketsViewModel.error
.nonNull()
.observe(this, Observer {
Snackbar.make(ticketsCoordinatorLayout, it, Snackbar.LENGTH_LONG).show()
})

ticketsViewModel.progressTickets
.nonNull()
.observe(this, Observer {
Expand All @@ -98,11 +112,13 @@ class TicketsFragment : Fragment() {
rootView.register.isGone = it
})

ticketsViewModel.event
.nonNull()
.observe(this, Observer {
loadEventDetails(it)
})
rootView.register.setOnClickListener {
if (!ticketsViewModel.totalTicketsEmpty(ticketIdAndQty)) {
checkForAuthentication()
} else {
handleNoTicketsSelected()
}
}

ticketsViewModel.ticketTableVisibility
.nonNull()
Expand All @@ -116,21 +132,6 @@ class TicketsFragment : Fragment() {
ticketsViewModel.loadEvent(id)
ticketsViewModel.loadTickets(id)

ticketsViewModel.tickets
.nonNull()
.observe(this, Observer {
ticketsRecyclerAdapter.addAll(it)
ticketsRecyclerAdapter.notifyDataSetChanged()
})

rootView.register.setOnClickListener {
if (!ticketsViewModel.totalTicketsEmpty(ticketIdAndQty)) {
checkForAuthentication()
} else {
handleNoTicketsSelected()
}
}

return rootView
}

Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/layout/fragment_events.xml
Expand Up @@ -99,6 +99,7 @@
android:id="@+id/eventsRecycler"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="@dimen/padding_medium"
android:scrollbars="vertical" />
</FrameLayout>
</LinearLayout>
Expand Down

0 comments on commit fb5683e

Please sign in to comment.