Skip to content

Commit 5870906

Browse files
fix(YouTube - SponsorBlock): Show create new segment error messages using a dialog (ReVanced#4148)
1 parent 2694158 commit 5870906

File tree

3 files changed

+39
-30
lines changed

3 files changed

+39
-30
lines changed

extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SponsorBlockPreferenceFragment.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,7 @@ private void addUserStats(@NonNull Preference loadingPlaceholder, @Nullable User
507507
Utils.showToastLong(str("revanced_sb_stats_username_changed"));
508508
} else {
509509
preference.setText(userName); // revert to previous
510-
Utils.showToastLong(errorMessage);
510+
SponsorBlockUtils.showErrorDialog(errorMessage);
511511
}
512512
});
513513
});

extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/SponsorBlockUtils.java

+10
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,16 @@ static void sendViewRequestAsync(@NonNull SponsorSegment segment) {
363363
}
364364
}
365365

366+
public static void showErrorDialog(String dialogMessage) {
367+
Utils.runOnMainThreadNowOrLater(() ->
368+
new AlertDialog.Builder(SponsorBlockViewController.getOverLaysViewGroupContext())
369+
.setMessage(dialogMessage)
370+
.setPositiveButton(android.R.string.ok, null)
371+
.setCancelable(false)
372+
.show()
373+
);
374+
}
375+
366376
public static void onEditByHandClicked() {
367377
try {
368378
Utils.verifyOnMainThread();

extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/requests/SBRequester.java

+28-29
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import app.revanced.extension.youtube.settings.Settings;
2121
import app.revanced.extension.youtube.sponsorblock.SponsorBlockSettings;
22+
import app.revanced.extension.youtube.sponsorblock.SponsorBlockUtils;
2223
import app.revanced.extension.youtube.sponsorblock.objects.SegmentCategory;
2324
import app.revanced.extension.youtube.sponsorblock.objects.SponsorSegment;
2425
import app.revanced.extension.youtube.sponsorblock.objects.SponsorSegment.SegmentVote;
@@ -142,6 +143,7 @@ public static SponsorSegment[] getSegments(@NonNull String videoId) {
142143
public static void submitSegments(@NonNull String videoId, @NonNull String category,
143144
long startTime, long endTime, long videoLength) {
144145
Utils.verifyOffMainThread();
146+
145147
try {
146148
String privateUserId = SponsorBlockSettings.getSBPrivateUserID();
147149
String start = String.format(Locale.US, TIME_TEMPLATE, startTime / 1000f);
@@ -151,35 +153,29 @@ public static void submitSegments(@NonNull String videoId, @NonNull String categ
151153
HttpURLConnection connection = getConnectionFromRoute(SBRoutes.SUBMIT_SEGMENTS, privateUserId, videoId, category, start, end, duration);
152154
final int responseCode = connection.getResponseCode();
153155

154-
final String messageToToast;
155-
switch (responseCode) {
156-
case HTTP_STATUS_CODE_SUCCESS:
157-
messageToToast = str("revanced_sb_submit_succeeded");
158-
break;
159-
case 409:
160-
messageToToast = str("revanced_sb_submit_failed_duplicate");
161-
break;
162-
case 403:
163-
messageToToast = str("revanced_sb_submit_failed_forbidden", Requester.parseErrorStringAndDisconnect(connection));
164-
break;
165-
case 429:
166-
messageToToast = str("revanced_sb_submit_failed_rate_limit");
167-
break;
168-
case 400:
169-
messageToToast = str("revanced_sb_submit_failed_invalid", Requester.parseErrorStringAndDisconnect(connection));
170-
break;
171-
default:
172-
messageToToast = str("revanced_sb_submit_failed_unknown_error", responseCode, connection.getResponseMessage());
173-
break;
174-
}
175-
Utils.showToastLong(messageToToast);
156+
String userMessage = switch (responseCode) {
157+
case HTTP_STATUS_CODE_SUCCESS -> str("revanced_sb_submit_succeeded");
158+
case 409 -> str("revanced_sb_submit_failed_duplicate");
159+
case 403 -> str("revanced_sb_submit_failed_forbidden",
160+
Requester.parseErrorStringAndDisconnect(connection));
161+
case 429 -> str("revanced_sb_submit_failed_rate_limit");
162+
case 400 -> str("revanced_sb_submit_failed_invalid",
163+
Requester.parseErrorStringAndDisconnect(connection));
164+
default -> str("revanced_sb_submit_failed_unknown_error",
165+
responseCode, connection.getResponseMessage());
166+
};
167+
168+
// Message might be about the users account or an error too large to show in a toast.
169+
// Use a dialog instead.
170+
SponsorBlockUtils.showErrorDialog(userMessage);
176171
} catch (SocketTimeoutException ex) {
177-
// Always show, even if show connection toasts is turned off
172+
Logger.printDebug(() -> "Timeout", ex);
178173
Utils.showToastLong(str("revanced_sb_submit_failed_timeout"));
179174
} catch (IOException ex) {
175+
Logger.printDebug(() -> "IOException", ex);
180176
Utils.showToastLong(str("revanced_sb_submit_failed_unknown_error", 0, ex.getMessage()));
181177
} catch (Exception ex) {
182-
Logger.printException(() -> "failed to submit segments", ex);
178+
Logger.printException(() -> "failed to submit segments", ex); // Should never happen.
183179
}
184180
}
185181

@@ -218,19 +214,22 @@ private static void voteOrRequestCategoryChange(@NonNull SponsorSegment segment,
218214
: getConnectionFromRoute(SBRoutes.VOTE_ON_SEGMENT_QUALITY, uuid, segmentUuid, String.valueOf(voteOption.apiVoteType));
219215
final int responseCode = connection.getResponseCode();
220216

217+
String userMessage;
221218
switch (responseCode) {
222219
case HTTP_STATUS_CODE_SUCCESS:
223220
Logger.printDebug(() -> "Vote success for segment: " + segment);
224-
break;
221+
return;
225222
case 403:
226-
Utils.showToastLong(
227-
str("revanced_sb_vote_failed_forbidden", Requester.parseErrorStringAndDisconnect(connection)));
223+
userMessage = str("revanced_sb_vote_failed_forbidden",
224+
Requester.parseErrorStringAndDisconnect(connection));
228225
break;
229226
default:
230-
Utils.showToastLong(
231-
str("revanced_sb_vote_failed_unknown_error", responseCode, connection.getResponseMessage()));
227+
userMessage = str("revanced_sb_vote_failed_unknown_error",
228+
responseCode, connection.getResponseMessage());
232229
break;
233230
}
231+
232+
SponsorBlockUtils.showErrorDialog(userMessage);
234233
} catch (SocketTimeoutException ex) {
235234
Utils.showToastShort(str("revanced_sb_vote_failed_timeout"));
236235
} catch (IOException ex) {

0 commit comments

Comments
 (0)