Skip to content

Commit 2daad49

Browse files
committed
use showBottomSheetDialog
Signed-off-by: alperozturk <[email protected]>
1 parent 9628af5 commit 2daad49

File tree

5 files changed

+80
-28
lines changed

5 files changed

+80
-28
lines changed

app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/AccountSwitcherDialog.java

Lines changed: 40 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,13 @@
1414
import android.graphics.drawable.LayerDrawable;
1515
import android.net.Uri;
1616
import android.os.Bundle;
17+
import android.view.View;
1718

1819
import androidx.annotation.NonNull;
1920
import androidx.fragment.app.DialogFragment;
2021

2122
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
23+
import com.owncloud.android.lib.resources.users.Status;
2224

2325
import java.util.concurrent.ExecutorService;
2426
import java.util.concurrent.Executors;
@@ -33,6 +35,7 @@
3335
import it.niedermann.owncloud.notes.persistence.NotesRepository;
3436
import it.niedermann.owncloud.notes.persistence.entity.Account;
3537
import it.niedermann.owncloud.notes.share.helper.AvatarLoader;
38+
import it.niedermann.owncloud.notes.shared.util.DisplayUtils;
3639
import it.niedermann.owncloud.notes.util.ActivityExtensionsKt;
3740
import kotlin.Unit;
3841

@@ -47,6 +50,8 @@ public class AccountSwitcherDialog extends BrandedDialogFragment {
4750
private DialogAccountSwitcherBinding binding;
4851
private AccountSwitcherListener accountSwitcherListener;
4952
private long currentAccountId;
53+
private UserStatusRepository repository;
54+
private Status currentStatus;
5055
private final ExecutorService executor = Executors.newSingleThreadExecutor();
5156

5257
@Override
@@ -67,6 +72,34 @@ public void onAttach(@NonNull Context context) {
6772
}
6873

6974
repo = NotesRepository.getInstance(requireContext());
75+
initRepositoryAndFetchCurrentStatus();
76+
}
77+
78+
private void initRepositoryAndFetchCurrentStatus() {
79+
ActivityExtensionsKt.ssoAccount(requireActivity(), account -> {
80+
if (account != null) {
81+
repository = new UserStatusRepository(requireContext(), account);
82+
} else {
83+
DisplayUtils.showSnackMessage(requireView(), R.string.account_switch_dialog_status_fetching_error_message);
84+
}
85+
executor.execute(() -> {
86+
currentStatus = repository.fetchUserStatus();
87+
requireActivity().runOnUiThread(() -> {
88+
final var message = currentStatus.getMessage();
89+
if (message != null) {
90+
binding.accountStatus.setVisibility(View.VISIBLE);
91+
binding.accountStatus.setText(message);
92+
}
93+
94+
final var emoji = currentStatus.getIcon();
95+
if (emoji != null) {
96+
binding.accountStatusEmoji.setVisibility(View.VISIBLE);
97+
binding.accountStatusEmoji.setText(emoji);
98+
}
99+
});
100+
});
101+
return Unit.INSTANCE;
102+
});
70103
}
71104

72105
@NonNull
@@ -128,25 +161,14 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
128161
}
129162

130163
private void showBottomSheetDialog(@NonNull AccountSwitcherBottomSheetTag tag) {
131-
ActivityExtensionsKt.ssoAccount(requireActivity(), account -> {
132-
if (account == null) {
133-
return Unit.INSTANCE;
134-
}
135-
final var repository = new UserStatusRepository(requireContext(), account);
136-
executor.execute(() -> {
137-
final var currentStatus = repository.fetchUserStatus();
138-
if (currentStatus == null) {
139-
return;
140-
}
164+
if (repository == null || currentStatus == null) {
165+
DisplayUtils.showSnackMessage(requireView(), R.string.account_switch_dialog_status_fetching_error_message);
166+
return;
167+
}
141168

142-
requireActivity().runOnUiThread(() -> {
143-
final var fragment = tag.fragment(repository, currentStatus);
144-
fragment.show(requireActivity().getSupportFragmentManager(), tag.name());
145-
dismiss();
146-
});
147-
});
148-
return Unit.INSTANCE;
149-
});
169+
final var fragment = tag.fragment(repository, currentStatus);
170+
fragment.show(requireActivity().getSupportFragmentManager(), tag.name());
171+
dismiss();
150172
}
151173

152174
public static DialogFragment newInstance(long currentAccountId) {

app/src/main/res/layout/dialog_account_switcher.xml

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,31 @@
2222
android:padding="@dimen/spacer_2x"
2323
android:paddingHorizontal="@dimen/spacer_1x">
2424

25-
<androidx.appcompat.widget.AppCompatImageView
26-
android:id="@+id/currentAccountItemAvatar"
25+
<FrameLayout
2726
android:layout_width="@dimen/avatar_size"
2827
android:layout_height="@dimen/avatar_size"
29-
android:layout_marginStart="@dimen/spacer_activity_sides"
30-
android:contentDescription="@null"
31-
android:focusable="false"
32-
android:scaleType="center"
33-
app:srcCompat="@drawable/ic_account_circle_grey_24dp" />
28+
android:layout_marginStart="@dimen/spacer_activity_sides">
29+
30+
<androidx.appcompat.widget.AppCompatImageView
31+
android:id="@+id/currentAccountItemAvatar"
32+
android:layout_width="match_parent"
33+
android:layout_height="match_parent"
34+
android:contentDescription="@null"
35+
app:srcCompat="@drawable/ic_account_circle_grey_24dp" />
36+
37+
<TextView
38+
android:id="@+id/accountStatusEmoji"
39+
android:layout_width="wrap_content"
40+
android:layout_height="wrap_content"
41+
android:layout_gravity="bottom|end"
42+
android:textSize="@dimen/emoji_size"
43+
android:visibility="gone"
44+
android:translationX="2dp"
45+
android:translationY="2dp"
46+
tools:visibility="visible"
47+
tools:text="😀"
48+
android:background="@android:color/transparent" />
49+
</FrameLayout>
3450

3551
<LinearLayout
3652
android:layout_width="0dp"
@@ -49,13 +65,23 @@
4965
android:textAppearance="?attr/textAppearanceListItem"
5066
tools:text="@tools:sample/full_names" />
5167

68+
<TextView
69+
android:id="@+id/accountStatus"
70+
android:layout_width="wrap_content"
71+
android:layout_height="wrap_content"
72+
android:visibility="gone"
73+
tools:visibility="visible"
74+
android:ellipsize="middle"
75+
android:singleLine="true"
76+
android:textColor="@color/secondary_text_color"
77+
tools:text="@string/placeholder_user_status" />
78+
5279
<TextView
5380
android:id="@+id/accountHost"
5481
android:layout_width="wrap_content"
5582
android:layout_height="wrap_content"
5683
android:ellipsize="middle"
5784
android:singleLine="true"
58-
android:textAppearance="?attr/textAppearanceListItemSecondary"
5985
tools:text="@tools:sample/full_names" />
6086
</LinearLayout>
6187

app/src/main/res/values-v31/dimens.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<dimen name="spacer_3x">24dp</dimen>
1616
<dimen name="spacer_5x">40dp</dimen>
1717

18-
<dimen name="avatar_size">36dp</dimen>
18+
<dimen name="avatar_size">40dp</dimen>
1919

2020
<dimen name="spacer_activity_sides">0dp</dimen>
2121

app/src/main/res/values/dimens.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
<dimen name="button_extra_width">180dp</dimen>
2626
<dimen name="bottom_navigation_view_margin">100dp</dimen>
2727

28-
<dimen name="avatar_size">36dp</dimen>
28+
<dimen name="avatar_size">40dp</dimen>
2929

3030
<dimen name="activity_row_layout_min_width_independent">196dip</dimen>
3131
<dimen name="activity_row_layout_height">48dp</dimen>
@@ -51,6 +51,8 @@
5151
<dimen name="primary_font_size">16sp</dimen>
5252
<dimen name="secondary_font_size">14sp</dimen>
5353

54+
<dimen name="emoji_size">14sp</dimen>
55+
5456
<!-- Font Sizes -->
5557
<dimen name="note_font_size_minimum">12sp</dimen>
5658
<dimen name="note_font_size_small">16sp</dimen>

app/src/main/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -537,4 +537,6 @@
537537
<string name="mute_all_notifications">Mute all notifications</string>
538538
<string name="appear_offline">Appear offline</string>
539539
<string name="status_set_fail_message">Failed to set status!</string>
540+
<string name="account_switch_dialog_status_fetching_error_message">Failed to fetch status, please try again.</string>
541+
<string name="placeholder_user_status" translatable="false">Online</string>
540542
</resources>

0 commit comments

Comments
 (0)