Skip to content

Commit ce78495

Browse files
anhanh11001iamareebjamal
authored andcommitted
fix: Multiple small enhancements in Event Detail Fragment (#2294)
Detail: - use isVisible() Kotlin function - Fix some empty space in session card - Strip HTML in Sponsor section - Add auto link in Speakers Call announcement section - Improve network call in Session Fragment - Fix clickListener in Session Detail Section Fixes: #2290
1 parent 618ff85 commit ce78495

File tree

10 files changed

+52
-53
lines changed

10 files changed

+52
-53
lines changed

app/src/main/java/org/fossasia/openevent/general/sessions/SessionFragment.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,12 @@ class SessionFragment : Fragment() {
9999
rootView.speakersProgressBar.isVisible = false
100100
})
101101

102-
sessionViewModel.loadSession(safeArgs.sessionId)
102+
val currentSession = sessionViewModel.session.value
103+
if (currentSession == null)
104+
sessionViewModel.loadSession(safeArgs.sessionId)
105+
else
106+
makeSessionView(currentSession)
107+
103108
val currentSpeakers = sessionViewModel.speakersUnderSession.value
104109
if (currentSpeakers == null)
105110
sessionViewModel.loadSpeakersUnderSession(safeArgs.sessionId)
@@ -239,7 +244,8 @@ class SessionFragment : Fragment() {
239244
rootView.sessionDetailAbstract.post {
240245
if (rootView.sessionDetailAbstract.lineCount > LINE_COUNT_ABSTRACT) {
241246
rootView.sessionDetailAbstractSeeMore.isVisible = true
242-
rootView.sessionDetailAbstractContainer.setOnClickListener(sessionAbstractClickListener)
247+
rootView.sessionDetailAbstract.setOnClickListener(sessionAbstractClickListener)
248+
rootView.sessionDetailAbstractSeeMore.setOnClickListener(sessionAbstractClickListener)
243249
}
244250
}
245251
}

app/src/main/java/org/fossasia/openevent/general/sessions/SessionViewHolder.kt

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import android.graphics.Color
44
import android.view.View
55
import androidx.core.view.isVisible
66
import androidx.recyclerview.widget.RecyclerView
7-
import kotlinx.android.synthetic.main.item_session.view.mircolocation
7+
import kotlinx.android.synthetic.main.item_session.view.microLocation
88
import kotlinx.android.synthetic.main.item_session.view.sessionType
99
import kotlinx.android.synthetic.main.item_session.view.sessiontime
1010
import kotlinx.android.synthetic.main.item_session.view.shortAbstract
@@ -23,16 +23,22 @@ class SessionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
2323

2424
fun bind(session: Session) {
2525
itemView.title.text = session.title
26-
session.sessionType.let {
27-
itemView.sessionType.text = it?.name
28-
}
29-
session.microlocation.let {
30-
itemView.mircolocation.text = it?.name
31-
}
26+
27+
val sessionType = session.sessionType
28+
if (sessionType == null)
29+
itemView.sessionType.isVisible = false
30+
else
31+
itemView.sessionType.text = sessionType.name
32+
33+
val microLocation = session.microlocation
34+
if (microLocation == null)
35+
itemView.microLocation.isVisible = false
36+
else
37+
itemView.microLocation.text = microLocation.name
3238

3339
session.track.let {
3440
if (it == null)
35-
itemView.trackDetail.visibility = View.GONE
41+
itemView.trackDetail.isVisible = false
3642
else {
3743
itemView.trackText.text = it.name
3844
itemView.trackIcon.setColorFilter(Color.parseColor(it.color))

app/src/main/java/org/fossasia/openevent/general/sessions/SessionViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ class SessionViewModel(
3939
compositeDisposable += sessionService.fetchSession(id)
4040
.withDefaultSchedulers()
4141
.doOnSubscribe { mutableProgress.value = true }
42+
.doFinally { mutableProgress.value = false }
4243
.subscribe({
4344
mutableSession.value = it
44-
mutableProgress.value = false
4545
}, {
4646
Timber.e(it, "Error fetching session id $id")
4747
mutableError.value = resource.getString(R.string.error_fetching_event_section_message,

app/src/main/java/org/fossasia/openevent/general/speakercall/SpeakersCallFragment.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package org.fossasia.openevent.general.speakercall
22

33
import androidx.appcompat.app.AlertDialog
44
import android.os.Bundle
5+
import android.text.Html
6+
import android.text.method.LinkMovementMethod
57
import android.view.LayoutInflater
68
import android.view.MenuItem
79
import android.view.View
@@ -25,7 +27,6 @@ import org.fossasia.openevent.general.event.EventUtils.getFormattedDate
2527
import org.koin.androidx.viewmodel.ext.android.viewModel
2628
import org.fossasia.openevent.general.utils.Utils.setToolbar
2729
import org.fossasia.openevent.general.utils.extensions.nonNull
28-
import org.fossasia.openevent.general.utils.stripHtml
2930
import org.jetbrains.anko.design.snackbar
3031
import org.threeten.bp.DateTimeUtils
3132
import java.util.Date
@@ -170,7 +171,8 @@ class SpeakersCallFragment : Fragment() {
170171
val endTime: Date = DateTimeUtils.toDate(endAt.toInstant())
171172
val currentTime = Date()
172173

173-
rootView.speakersCallDescription.text = speakersCall.announcement.stripHtml()
174+
rootView.speakersCallDescription.movementMethod = LinkMovementMethod.getInstance()
175+
rootView.speakersCallDescription.text = Html.fromHtml(speakersCall.announcement)
174176
if (currentTime < startTime) {
175177
rootView.timeStatus.isVisible = false
176178
rootView.speakersCallTimeDetail.text = getString(R.string.speakers_call_open_at, getFormattedDate(startAt))

app/src/main/java/org/fossasia/openevent/general/sponsor/SponsorsDetailAdapter.kt

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,17 @@ package org.fossasia.openevent.general.sponsor
33
import android.view.LayoutInflater
44
import android.view.View
55
import android.view.ViewGroup
6+
import androidx.core.view.isVisible
67
import androidx.recyclerview.widget.RecyclerView
78
import com.squareup.picasso.Picasso
8-
import kotlinx.android.synthetic.main.item_sponsor_detail.view.sponsorDetailURL
99
import kotlinx.android.synthetic.main.item_sponsor_detail.view.sponsorDetailLogo
1010
import kotlinx.android.synthetic.main.item_sponsor_detail.view.sponsorDetailDescription
1111
import kotlinx.android.synthetic.main.item_sponsor_detail.view.sponsorDetailType
1212
import kotlinx.android.synthetic.main.item_sponsor_detail.view.sponsorDetailName
1313
import org.fossasia.openevent.general.R
14+
import org.fossasia.openevent.general.data.Resource
1415
import org.fossasia.openevent.general.utils.Utils
16+
import org.fossasia.openevent.general.utils.stripHtml
1517

1618
class SponsorsDetailAdapter : RecyclerView.Adapter<SponsorsDetailViewHolder>() {
1719

@@ -41,6 +43,7 @@ class SponsorsDetailAdapter : RecyclerView.Adapter<SponsorsDetailViewHolder>() {
4143

4244
class SponsorsDetailViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
4345
lateinit var sponsorURLClickListener: SponsorURLClickListener
46+
private val resource = Resource()
4447

4548
fun bind(sponsor: Sponsor) {
4649
Picasso.get()
@@ -51,19 +54,19 @@ class SponsorsDetailViewHolder(itemView: View) : RecyclerView.ViewHolder(itemVie
5154

5255
itemView.sponsorDetailName.text = sponsor.name
5356
if (sponsor.type.isNullOrBlank()) {
54-
itemView.sponsorDetailType.visibility = View.GONE
57+
itemView.sponsorDetailType.isVisible = false
5558
} else {
56-
itemView.sponsorDetailType.text = "Type: ${sponsor.type}"
57-
itemView.sponsorDetailType.visibility = View.VISIBLE
59+
itemView.sponsorDetailType.text = resource.getString(R.string.sponsor_type, sponsor.type)
60+
itemView.sponsorDetailType.isVisible = true
5861
}
5962
if (sponsor.description.isNullOrBlank()) {
60-
itemView.sponsorDetailDescription.visibility = View.GONE
63+
itemView.sponsorDetailDescription.isVisible = false
6164
} else {
62-
itemView.sponsorDetailDescription.text = sponsor.description
63-
itemView.sponsorDetailDescription.visibility = View.VISIBLE
65+
itemView.sponsorDetailDescription.text = sponsor.description.stripHtml()
66+
itemView.sponsorDetailDescription.isVisible = true
6467
}
6568

66-
itemView.sponsorDetailURL.setOnClickListener {
69+
itemView.setOnClickListener {
6770
sponsorURLClickListener.onClick(sponsor.url)
6871
}
6972
}

app/src/main/res/layout/fragment_speaker.xml

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
xmlns:tools="http://schemas.android.com/tools">
66
<LinearLayout
77
android:orientation="vertical" android:layout_width="match_parent"
8-
android:layout_height="match_parent">
8+
android:layout_height="match_parent"
9+
android:paddingStart="@dimen/padding_large"
10+
android:paddingEnd="@dimen/padding_large">
911
<ImageView
1012
android:layout_width="@dimen/item_image_view_extra_large"
1113
android:layout_height="@dimen/item_image_view_extra_large"
@@ -48,16 +50,12 @@
4850
<View
4951
android:layout_width="match_parent"
5052
android:layout_height="@dimen/event_details_divider"
51-
android:layout_marginLeft="@dimen/layout_margin_large"
52-
android:layout_marginRight="@dimen/layout_margin_large"
5353
android:layout_marginBottom="@dimen/layout_margin_extra_large"
5454
android:background="@color/grey" />
5555

5656
<TextView
5757
android:layout_width="match_parent"
5858
android:layout_height="wrap_content"
59-
android:layout_marginLeft="@dimen/layout_margin_large"
60-
android:layout_marginRight="@dimen/layout_margin_large"
6159
android:layout_marginBottom="@dimen/divider_margin_top"
6260
android:text="@string/about"
6361
android:textColor="@color/dark_grey"
@@ -67,8 +65,6 @@
6765
android:id="@+id/bio"
6866
android:layout_width="match_parent"
6967
android:layout_height="wrap_content"
70-
android:layout_marginLeft="@dimen/layout_margin_large"
71-
android:layout_marginRight="@dimen/layout_margin_large"
7268
android:layout_marginBottom="@dimen/layout_margin_large"
7369
android:textColor="@color/light_grey"
7470
tools:text="Description" />
@@ -93,28 +89,22 @@
9389
<TextView
9490
android:layout_width="match_parent"
9591
android:layout_height="wrap_content"
96-
android:layout_marginLeft="@dimen/layout_margin_large"
97-
android:layout_marginRight="@dimen/layout_margin_large"
9892
android:layout_marginBottom="@dimen/divider_margin_top"
99-
android:text="Contact"
93+
android:text="@string/contact"
10094
android:textColor="@color/dark_grey"
10195
android:textSize="@dimen/event_details_headers" />
10296

10397
<TextView
10498
android:id="@+id/from"
10599
android:layout_width="match_parent"
106100
android:layout_height="wrap_content"
107-
android:layout_marginLeft="@dimen/layout_margin_large"
108-
android:layout_marginRight="@dimen/layout_margin_large"
109101
android:layout_marginBottom="@dimen/layout_margin_large"
110102
android:textColor="@color/light_grey"
111103
tools:text="City, country" />
112104
<TextView
113105
android:id="@+id/email"
114106
android:layout_width="match_parent"
115107
android:layout_height="wrap_content"
116-
android:layout_marginLeft="@dimen/layout_margin_large"
117-
android:layout_marginRight="@dimen/layout_margin_large"
118108
android:layout_marginBottom="@dimen/layout_margin_large"
119109
android:textColor="@color/light_grey"
120110
android:autoLink="email"
@@ -123,8 +113,6 @@
123113
android:id="@+id/mobile"
124114
android:layout_width="match_parent"
125115
android:layout_height="wrap_content"
126-
android:layout_marginLeft="@dimen/layout_margin_large"
127-
android:layout_marginRight="@dimen/layout_margin_large"
128116
android:layout_marginBottom="@dimen/layout_margin_large"
129117
android:textColor="@color/light_grey"
130118
android:autoLink="phone"
@@ -134,42 +122,40 @@
134122
android:layout_width="match_parent"
135123
android:layout_height="wrap_content"
136124
android:orientation="horizontal"
137-
android:layout_marginLeft="@dimen/layout_margin_large"
138-
android:layout_marginRight="@dimen/layout_margin_large"
139125
android:layout_marginBottom="@dimen/divider_margin_top">
140126
<ImageView
141127
android:id="@+id/website"
142128
android:layout_width="wrap_content"
143129
android:layout_height="wrap_content"
144-
android:layout_marginRight="@dimen/layout_margin_medium"
130+
android:layout_marginEnd="@dimen/layout_margin_medium"
145131
android:background="?attr/selectableItemBackgroundBorderless"
146132
android:src="@drawable/ic_link_black" />
147133
<ImageView
148134
android:id="@+id/twitter"
149135
android:layout_width="wrap_content"
150136
android:layout_height="wrap_content"
151-
android:layout_marginRight="@dimen/layout_margin_medium"
137+
android:layout_marginEnd="@dimen/layout_margin_medium"
152138
android:background="?attr/selectableItemBackgroundBorderless"
153139
android:src="@drawable/ic_twitter" />
154140
<ImageView
155141
android:id="@+id/facebook"
156142
android:layout_width="wrap_content"
157143
android:layout_height="wrap_content"
158-
android:layout_marginRight="@dimen/layout_margin_medium"
144+
android:layout_marginEnd="@dimen/layout_margin_medium"
159145
android:background="?attr/selectableItemBackgroundBorderless"
160146
android:src="@drawable/ic_facebook" />
161147
<ImageView
162148
android:id="@+id/linkedin"
163149
android:layout_width="wrap_content"
164150
android:layout_height="wrap_content"
165-
android:layout_marginRight="@dimen/layout_margin_medium"
151+
android:layout_marginEnd="@dimen/layout_margin_medium"
166152
android:background="?attr/selectableItemBackgroundBorderless"
167153
android:src="@drawable/ic_linkedin" />
168154
<ImageView
169155
android:id="@+id/github"
170156
android:layout_width="wrap_content"
171157
android:layout_height="wrap_content"
172-
android:layout_marginRight="@dimen/layout_margin_medium"
158+
android:layout_marginEnd="@dimen/layout_margin_medium"
173159
android:background="?attr/selectableItemBackgroundBorderless"
174160
android:src="@drawable/ic_github" />
175161
</LinearLayout>

app/src/main/res/layout/fragment_speakers_call.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@
110110
android:id="@+id/speakersCallDescription"
111111
android:layout_width="match_parent"
112112
android:layout_height="wrap_content"
113+
android:autoLink="web|email|phone"
113114
android:layout_marginBottom="@dimen/layout_margin_large"
114115
tools:text="@string/description_preview"/>
115116
</LinearLayout>

app/src/main/res/layout/item_session.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
android:textSize="@dimen/text_size_large" />
3838

3939
<TextView
40-
android:id="@+id/mircolocation"
40+
android:id="@+id/microLocation"
4141
android:layout_width="wrap_content"
4242
android:layout_height="wrap_content"
4343
android:layout_marginTop="@dimen/layout_margin_large"

app/src/main/res/layout/item_sponsor_detail.xml

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
android:layout_width="match_parent"
44
android:layout_height="wrap_content"
55
xmlns:tools="http://schemas.android.com/tools"
6+
android:background="?selectableItemBackground"
67
android:layout_margin="@dimen/layout_margin_medium">
78

89
<LinearLayout
@@ -43,14 +44,6 @@
4344
android:layout_height="wrap_content"
4445
android:layout_marginBottom="@dimen/layout_margin_small"
4546
tools:text="@string/description_preview"/>
46-
47-
<ImageView
48-
android:id="@+id/sponsorDetailURL"
49-
android:layout_width="wrap_content"
50-
android:layout_height="wrap_content"
51-
android:layout_gravity="end"
52-
android:src="@drawable/ic_link_black"
53-
android:background="?attr/selectableItemBackgroundBorderless"/>
5447
</LinearLayout>
5548
</LinearLayout>
5649

app/src/main/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -527,5 +527,7 @@
527527
<string name="linkedin">LinkedIn</string>
528528
<string name="order_now">Order Now</string>
529529
<string name="no_location">No Location</string>
530+
<string name="sponsor_type">Type: %1$s</string>
531+
<string name="contact">Contact</string>
530532

531533
</resources>

0 commit comments

Comments
 (0)