|
@@ -63,6 +63,7 @@ class SharedItemsActivity : AppCompatActivity() {
|
|
|
val roomToken = intent.getStringExtra(KEY_ROOM_TOKEN)!!
|
|
|
val conversationName = intent.getStringExtra(KEY_CONVERSATION_NAME)
|
|
|
val user = intent.getParcelableExtra<User>(KEY_USER_ENTITY)!!
|
|
|
+ val isUserConversationOwnerOrModerator = intent.getBooleanExtra(KEY_USER_IS_OWNER_OR_MODERATOR, false)
|
|
|
|
|
|
binding = ActivitySharedItemsBinding.inflate(layoutInflater)
|
|
|
setSupportActionBar(binding.sharedItemsToolbar)
|
|
@@ -85,35 +86,7 @@ class SharedItemsActivity : AppCompatActivity() {
|
|
|
viewModel = ViewModelProvider(this, viewModelFactory)[SharedItemsViewModel::class.java]
|
|
|
|
|
|
viewModel.viewState.observe(this) { state ->
|
|
|
- clearEmptyLoading()
|
|
|
- when (state) {
|
|
|
- is SharedItemsViewModel.LoadingItemsState, SharedItemsViewModel.InitialState -> {
|
|
|
- showLoading()
|
|
|
- }
|
|
|
- is SharedItemsViewModel.NoSharedItemsState -> {
|
|
|
- showEmpty()
|
|
|
- }
|
|
|
- is SharedItemsViewModel.LoadedState -> {
|
|
|
- val sharedMediaItems = state.items
|
|
|
- Log.d(TAG, "Items received: $sharedMediaItems")
|
|
|
-
|
|
|
- val showGrid = state.selectedType == SharedItemType.MEDIA
|
|
|
- val layoutManager = if (showGrid) {
|
|
|
- GridLayoutManager(this, SPAN_COUNT)
|
|
|
- } else {
|
|
|
- LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
|
|
|
- }
|
|
|
-
|
|
|
- val adapter = SharedItemsAdapter(showGrid, user).apply {
|
|
|
- items = sharedMediaItems.items
|
|
|
- }
|
|
|
- binding.imageRecycler.adapter = adapter
|
|
|
- binding.imageRecycler.layoutManager = layoutManager
|
|
|
- }
|
|
|
- is SharedItemsViewModel.TypesLoadedState -> {
|
|
|
- initTabs(state.types)
|
|
|
- }
|
|
|
- }
|
|
|
+ handleModelChange(state, user, roomToken, isUserConversationOwnerOrModerator)
|
|
|
}
|
|
|
|
|
|
binding.imageRecycler.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
|
@@ -128,6 +101,49 @@ class SharedItemsActivity : AppCompatActivity() {
|
|
|
viewModel.initialize(user, roomToken)
|
|
|
}
|
|
|
|
|
|
+ private fun handleModelChange(
|
|
|
+ state: SharedItemsViewModel.ViewState?,
|
|
|
+ user: User,
|
|
|
+ roomToken: String,
|
|
|
+ isUserConversationOwnerOrModerator: Boolean
|
|
|
+ ) {
|
|
|
+ clearEmptyLoading()
|
|
|
+ when (state) {
|
|
|
+ is SharedItemsViewModel.LoadingItemsState, SharedItemsViewModel.InitialState -> {
|
|
|
+ showLoading()
|
|
|
+ }
|
|
|
+ is SharedItemsViewModel.NoSharedItemsState -> {
|
|
|
+ showEmpty()
|
|
|
+ }
|
|
|
+ is SharedItemsViewModel.LoadedState -> {
|
|
|
+ val sharedMediaItems = state.items
|
|
|
+ Log.d(TAG, "Items received: $sharedMediaItems")
|
|
|
+
|
|
|
+ val showGrid = state.selectedType == SharedItemType.MEDIA
|
|
|
+ val layoutManager = if (showGrid) {
|
|
|
+ GridLayoutManager(this, SPAN_COUNT)
|
|
|
+ } else {
|
|
|
+ LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
|
|
|
+ }
|
|
|
+
|
|
|
+ val adapter = SharedItemsAdapter(
|
|
|
+ showGrid,
|
|
|
+ user,
|
|
|
+ roomToken,
|
|
|
+ isUserConversationOwnerOrModerator
|
|
|
+ ).apply {
|
|
|
+ items = sharedMediaItems.items
|
|
|
+ }
|
|
|
+ binding.imageRecycler.adapter = adapter
|
|
|
+ binding.imageRecycler.layoutManager = layoutManager
|
|
|
+ }
|
|
|
+ is SharedItemsViewModel.TypesLoadedState -> {
|
|
|
+ initTabs(state.types)
|
|
|
+ }
|
|
|
+ else -> {}
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private fun clearEmptyLoading() {
|
|
|
binding.sharedItemsTabs.visibility = View.VISIBLE
|
|
|
binding.emptyContainer.emptyListView.visibility = View.GONE
|
|
@@ -176,12 +192,19 @@ class SharedItemsActivity : AppCompatActivity() {
|
|
|
binding.sharedItemsTabs.addTab(tabVoice)
|
|
|
}
|
|
|
|
|
|
- // if(sharedItemTypes.contains(SharedItemType.LOCATION)) {
|
|
|
- // val tabLocation: TabLayout.Tab = binding.sharedItemsTabs.newTab()
|
|
|
- // tabLocation.tag = SharedItemType.LOCATION
|
|
|
- // tabLocation.text = "location"
|
|
|
- // binding.sharedItemsTabs.addTab(tabLocation)
|
|
|
- // }
|
|
|
+ if (sharedItemTypes.contains(SharedItemType.POLL)) {
|
|
|
+ val tabVoice: TabLayout.Tab = binding.sharedItemsTabs.newTab()
|
|
|
+ tabVoice.tag = SharedItemType.POLL
|
|
|
+ tabVoice.setText(R.string.shared_items_poll)
|
|
|
+ binding.sharedItemsTabs.addTab(tabVoice)
|
|
|
+ }
|
|
|
+
|
|
|
+ if (sharedItemTypes.contains(SharedItemType.LOCATION)) {
|
|
|
+ val tabLocation: TabLayout.Tab = binding.sharedItemsTabs.newTab()
|
|
|
+ tabLocation.tag = SharedItemType.LOCATION
|
|
|
+ tabLocation.setText(R.string.nc_shared_items_location)
|
|
|
+ binding.sharedItemsTabs.addTab(tabLocation)
|
|
|
+ }
|
|
|
|
|
|
// if(sharedItemTypes.contains(SharedItemType.DECKCARD)) {
|
|
|
// val tabDeckCard: TabLayout.Tab = binding.sharedItemsTabs.newTab()
|
|
@@ -190,12 +213,12 @@ class SharedItemsActivity : AppCompatActivity() {
|
|
|
// binding.sharedItemsTabs.addTab(tabDeckCard)
|
|
|
// }
|
|
|
|
|
|
- // if(sharedItemTypes.contains(SharedItemType.OTHER)) {
|
|
|
- // val tabOther: TabLayout.Tab = binding.sharedItemsTabs.newTab()
|
|
|
- // tabOther.tag = SharedItemType.OTHER
|
|
|
- // tabOther.setText(R.string.shared_items_other)
|
|
|
- // binding.sharedItemsTabs.addTab(tabOther)
|
|
|
- // }
|
|
|
+ if (sharedItemTypes.contains(SharedItemType.OTHER)) {
|
|
|
+ val tabOther: TabLayout.Tab = binding.sharedItemsTabs.newTab()
|
|
|
+ tabOther.tag = SharedItemType.OTHER
|
|
|
+ tabOther.setText(R.string.shared_items_other)
|
|
|
+ binding.sharedItemsTabs.addTab(tabOther)
|
|
|
+ }
|
|
|
|
|
|
binding.sharedItemsTabs.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
|
|
|
override fun onTabSelected(tab: TabLayout.Tab) {
|
|
@@ -220,5 +243,6 @@ class SharedItemsActivity : AppCompatActivity() {
|
|
|
companion object {
|
|
|
private val TAG = SharedItemsActivity::class.simpleName
|
|
|
const val SPAN_COUNT: Int = 4
|
|
|
+ const val KEY_USER_IS_OWNER_OR_MODERATOR = "userIsOwnerOrModerator"
|
|
|
}
|
|
|
}
|