MemberBottomSheetFragment.kt 3.56 KB
Newer Older
1
package chat.rocket.android.members.ui
2 3 4 5 6

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
7
import androidx.core.view.isVisible
8
import chat.rocket.android.R
9
import chat.rocket.android.server.domain.AnalyticsTrackingInteractor
10 11
import chat.rocket.android.util.extensions.content
import chat.rocket.android.util.extensions.textContent
12 13 14
import chat.rocket.android.util.helper.analytics.AnalyticsManager
import chat.rocket.android.util.helper.analytics.event.ScreenViewEvent
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
15
import kotlinx.android.synthetic.main.fragment_member_bottom_sheet.*
16
import javax.inject.Inject
17

18 19 20 21 22 23 24
fun newInstance(
    avatarUri: String,
    realName: String,
    username: String,
    email: String,
    utcOffset: String
): BottomSheetDialogFragment {
25 26 27 28 29 30 31 32 33 34 35
    return MemberBottomSheetFragment().apply {
        arguments = Bundle(1).apply {
            putString(BUNDLE_AVATAR_URI, avatarUri)
            putString(BUNDLE_REAL_NAME, realName)
            putString(BUNDLE_USERNAME, username)
            putString(BUNDLE_EMAIL, email)
            putString(BUNDLE_UTC_OFFSET, utcOffset)
        }
    }
}

36 37
internal const val TAG_MEMBER_BOTTOM_SHEET_FRAGMENT = "MemberBottomSheetFragment"

38 39 40 41 42 43
private const val BUNDLE_AVATAR_URI = "avatar_uri"
private const val BUNDLE_REAL_NAME = "real_name"
private const val BUNDLE_USERNAME = "username"
private const val BUNDLE_EMAIL = "email"
private const val BUNDLE_UTC_OFFSET = "utc_offset"

44
class MemberBottomSheetFragment : BottomSheetDialogFragment() {
45 46
    @Inject
    lateinit var analyticsTrackingInteractor: AnalyticsTrackingInteractor
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
    private lateinit var avatarUri: String
    private lateinit var realName: String
    private lateinit var username: String
    private lateinit var email: String
    private lateinit var utcOffset: String

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val bundle = arguments
        if (bundle != null) {
            avatarUri = bundle.getString(BUNDLE_AVATAR_URI)
            realName = bundle.getString(BUNDLE_REAL_NAME)
            username = bundle.getString(BUNDLE_USERNAME)
            email = bundle.getString(BUNDLE_EMAIL)
            utcOffset = bundle.getString(BUNDLE_UTC_OFFSET)
        } else {
            requireNotNull(bundle) { "no arguments supplied when the fragment was instantiated" }
        }
    }
67 68 69 70 71 72

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? =
73 74 75 76 77
        inflater.inflate(R.layout.fragment_member_bottom_sheet, container, false)

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        showMemberDetails()
78 79

        if (analyticsTrackingInteractor.get()) {
80
            AnalyticsManager.logScreenView(ScreenViewEvent.MemberBottomSheet)
81
        }
82 83 84 85 86 87 88 89 90 91
    }

    private fun showMemberDetails() {
        image_bottom_sheet_avatar.setImageURI(avatarUri)
        text_bottom_sheet_member_name.content = realName
        text_bottom_sheet_member_username.content = username

        if (email.isNotEmpty()) {
            text_member_email_address.textContent = email
        } else {
92 93
            text_email_address.isVisible = false
            text_member_email_address.isVisible = false
94 95
        }

96
        if (utcOffset.isNotEmpty()) {
97 98
            text_member_utc.content = utcOffset
        } else {
99 100
            text_utc.isVisible = false
            text_member_utc.isVisible = false
101 102 103
        }
    }
}