Skip to content

Commit 239020e

Browse files
committed
Show "no network" snackbar when tapping some settings
A couple of settings don't work properly when network is not available so this commit adds a "guard", preventing those actions to continue and showing a snackbar with a "no network" message, similar to what the PagesFragment has. The settings affected are: - Parent Page To avoid the user selecting an invalid page as parent (that is not yet published remotely), it's better to disable the access to this option while offline to avoid issues. - Author The author list doesn't load properly while offline, showing a Dialog with a "Loading..." message.
1 parent 1b29103 commit 239020e

1 file changed

Lines changed: 25 additions & 0 deletions

File tree

WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostSettingsFragment.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import androidx.lifecycle.Observer;
2929
import androidx.lifecycle.ViewModelProvider;
3030

31+
import com.google.android.material.snackbar.Snackbar;
32+
3133
import org.apache.commons.text.StringEscapeUtils;
3234
import org.greenrobot.eventbus.Subscribe;
3335
import org.greenrobot.eventbus.ThreadMode;
@@ -68,11 +70,13 @@
6870
import org.wordpress.android.util.AppLog;
6971
import org.wordpress.android.util.AppLog.T;
7072
import org.wordpress.android.util.DateTimeUtils;
73+
import org.wordpress.android.util.NetworkUtilsWrapper;
7174
import org.wordpress.android.util.StringUtils;
7275
import org.wordpress.android.util.analytics.AnalyticsTrackerWrapper;
7376
import org.wordpress.android.util.image.ImageManager;
7477
import org.wordpress.android.util.image.ImageManager.RequestListener;
7578
import org.wordpress.android.util.image.ImageType;
79+
import org.wordpress.android.widgets.WPSnackbar;
7680

7781
import java.util.ArrayList;
7882
import java.util.Arrays;
@@ -149,6 +153,7 @@ public class EditPostSettingsFragment extends Fragment {
149153
@Inject UpdatePostStatusUseCase mUpdatePostStatusUseCase;
150154
@Inject MediaPickerLauncher mMediaPickerLauncher;
151155
@Inject UpdateFeaturedImageUseCase mUpdateFeaturedImageUseCase;
156+
@Inject NetworkUtilsWrapper mNetworkUtilsWrapper;
152157

153158
@Inject ViewModelProvider.Factory mViewModelFactory;
154159
private EditPostPublishSettingsViewModel mPublishedViewModel;
@@ -573,6 +578,11 @@ private void showPageParentActivity() {
573578
return;
574579
}
575580

581+
if (!mNetworkUtilsWrapper.isNetworkAvailable()) {
582+
showNoNetworkSnackbar();
583+
return;
584+
}
585+
576586
long remoteId = repository.getRemotePostId();
577587
ActivityLauncher.viewPageParentForResult(this, site, remoteId);
578588
}
@@ -687,6 +697,11 @@ private void showAuthorDialog() {
687697
return;
688698
}
689699

700+
if (!mNetworkUtilsWrapper.isNetworkAvailable()) {
701+
showNoNetworkSnackbar();
702+
return;
703+
}
704+
690705
FragmentManager fm = getActivity().getSupportFragmentManager();
691706

692707
PostSettingsListDialogFragment fragment = PostSettingsListDialogFragment.newAuthorListInstance(getAuthorId());
@@ -1308,8 +1323,18 @@ private void hideSpecificViews(Boolean isPage) {
13081323
}
13091324
}
13101325

1326+
private void showNoNetworkSnackbar() {
1327+
String message = getString(R.string.no_network_message);
1328+
WPSnackbar.make(
1329+
requireView().findViewById(R.id.settings_fragment_root),
1330+
message,
1331+
Snackbar.LENGTH_LONG
1332+
).show();
1333+
}
1334+
13111335
interface EditPostSettingsCallback {
13121336
void onEditPostPublishedSettingsClick();
1337+
13131338
void clearFeaturedImage();
13141339
}
13151340
}

0 commit comments

Comments
 (0)