The BaseVersionFragment extends Fragment and provides a layout containing views to display 22 | * version-related information. Subclasses should override onViewCreated() to customize the 23 | * information displayed. 24 | * 25 | *
This class uses FragmentUpdaterBinding to inflate the layout, and it sets the version tag
26 | * and channel information using the CurrentVersion and VersionUtil classes.
27 | */
28 | public class BaseVersionFragment extends Fragment {
29 |
30 | protected FragmentUpdaterBinding binding;
31 |
32 | @Override
33 | public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
34 | binding = FragmentUpdaterBinding.inflate(inflater, container, false);
35 |
36 | return binding.getRoot();
37 | }
38 |
39 | @Override
40 | public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
41 | super.onViewCreated(view, savedInstanceState);
42 |
43 | binding.build.setInformationText(CurrentVersion.getInstance().getVersionTag());
44 | binding.channel.setInformationText(VersionUtil.getChannelName(CurrentVersion.getInstance().getChannel(), requireContext()));
45 | }
46 | }
--------------------------------------------------------------------------------
/app/src/main/java/de/davis/passwordmanager/ui/viewmodels/HighlightsViewModel.java:
--------------------------------------------------------------------------------
1 | package de.davis.passwordmanager.ui.viewmodels;
2 |
3 | import static androidx.lifecycle.SavedStateHandleSupport.createSavedStateHandle;
4 |
5 | import androidx.lifecycle.LiveData;
6 | import androidx.lifecycle.MediatorLiveData;
7 | import androidx.lifecycle.SavedStateHandle;
8 | import androidx.lifecycle.ViewModel;
9 | import androidx.lifecycle.viewmodel.ViewModelInitializer;
10 |
11 | import java.util.List;
12 |
13 | import de.davis.passwordmanager.database.SecureElementManager;
14 | import de.davis.passwordmanager.database.dtos.SecureElement;
15 |
16 | public class HighlightsViewModel extends ViewModel {
17 |
18 | private static final String STATE = "state";
19 |
20 | private final SavedStateHandle savedStateHandle;
21 |
22 | private final MediatorLiveData> elements = new MediatorLiveData<>();
23 |
24 | public HighlightsViewModel(SavedStateHandle savedStateHandle) {
25 | this.savedStateHandle = savedStateHandle;
26 |
27 | elements.addSource(savedStateHandle.getLiveData(STATE, true), last ->{
28 | if(last)
29 | elements.postValue(SecureElementManager.getLastCreatedSync(5));
30 | else
31 | elements.postValue(SecureElementManager.getLastModifiedSync(5));
32 | });
33 | }
34 |
35 | public void setState(boolean lastAdded){
36 | savedStateHandle.set(STATE, lastAdded);
37 | }
38 |
39 | public LiveData
> getElements() {
40 | return elements;
41 | }
42 |
43 | public List