Sharingang/Sharingang-Android

View on GitHub
app/src/main/java/com/example/sharingang/ui/fragments/SubscriptionFragment.kt

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
package com.example.sharingang.ui.fragments

import android.os.Bundle
import android.text.TextUtils
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import com.example.sharingang.R
import com.example.sharingang.databinding.FragmentSubscriptionBinding
import com.example.sharingang.auth.CurrentUserProvider
import com.example.sharingang.viewmodels.UserProfileViewModel
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject

@AndroidEntryPoint
class SubscriptionFragment : Fragment() {

    private lateinit var binding: FragmentSubscriptionBinding

    @Inject
    lateinit var currentUserProvider: CurrentUserProvider
    private val userViewmodel: UserProfileViewModel by viewModels()

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        binding =
            DataBindingUtil.inflate(inflater, R.layout.fragment_subscription, container, false)

        val userId = currentUserProvider.getCurrentUserId()
        userViewmodel.setUser(userId)
        userViewmodel.user.observe(viewLifecycleOwner) { user ->
            if (user != null && user.subscriptions.isNotEmpty()) {
                val message = formatSubscriptions(user.subscriptions)
                binding.subscriptions.text = message
            }
        }

        return binding.root
    }

    private fun formatSubscriptions(subscriptions: List<String>): String {
        var message = context?.getString(R.string.subscribed_to)
        message = message.plus(TextUtils.join(", ", subscriptions)).plus(".")
        return message
    }
}