override fun onViewCreated()

in app/src/main/java/com/example/android/trackr/ui/archives/ArchivesFragment.kt [49:122]


    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        binding.viewModel = viewModel

        val adapter = ArchiveAdapter(
            clock = clock,
            onItemClick = { task ->
                if (viewModel.selectedCount.value > 0) {
                    viewModel.toggleTaskSelection(task.id)
                } else {
                    viewModel.selectTask(task)
                }
            },
            onItemLongClick = { task -> viewModel.toggleTaskSelection(task.id) },
            onItemStarClicked = { task -> viewModel.toggleTaskStarState(task.id) }
        )
        binding.archivedTasks.adapter = adapter

        repeatWithViewLifecycle {
            launch {
                viewModel.archivedTasks.collect {
                    adapter.submitList(it)
                }
            }
            // Undo unarchiving tasks
            launch {
                viewModel.unarchiveActions.collect { action ->
                    val count = action.taskIds.size
                    Snackbar.make(
                        binding.coordinator,
                        resources.getQuantityString(
                            R.plurals.tasks_unarchived,
                            count,
                            count
                        ),
                        5_000 // 5 seconds
                    )
                        .setAction(R.string.undo) { viewModel.undoUnarchiving(action) }
                        .show()
                }
            }
            launch {
                viewModel.selectedCount.collect {
                    backPressCallback.isEnabled = it > 0
                }
            }
        }

        binding.bottomBar.setNavigationOnClickListener { viewModel.clearSelection() }
        binding.bottomBar.setOnMenuItemClickListener { item ->
            when (item.itemId) {
                R.id.action_unarchive -> {
                    viewModel.unarchiveSelectedTasks()
                    true
                }
                else -> false
            }
        }

        binding.archivedTasks.doOnApplyWindowInsets { v, insets, padding, _ ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            // BottomAppBar has its own logic to adapt to window insets, but its height isn't
            // updated until measurement, so wait for its next layout.
            binding.bottomBar.doOnNextLayout { bottomBar ->
                v.updatePadding(
                    left = padding.left + systemBars.left,
                    right = padding.right + systemBars.right,
                    bottom = padding.bottom + bottomBar.height
                )
            }
            insets
        }

        requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner, backPressCallback)
    }