Skip to content

Commit 9474165

Browse files
Copilotgraycreate
andcommitted
Apply same fix to AppendTopicActivity for consistency
Co-authored-by: graycreate <5203798+graycreate@users.noreply.github.com>
1 parent ad02495 commit 9474165

File tree

1 file changed

+28
-13
lines changed

1 file changed

+28
-13
lines changed

app/src/main/java/me/ghui/v2er/module/append/AppendTopicActivity.java

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -134,21 +134,36 @@ public void handleError(GeneralError generalError) {
134134
if (Check.isEmpty(response)) return;
135135
Observable.just(response)
136136
.compose(rx(null))
137-
.map(s -> APIService.fruit().fromHtml(s, AppendTopicPageInfo.class))
138-
.subscribe(new GeneralConsumer<AppendTopicPageInfo>() {
137+
.map(s -> {
138+
// First, check if this is actually a successful append
139+
// (V2EX may return the topic page on success, which triggers error handler due to redirects)
140+
BaseInfo resultInfo = APIService.fruit().fromHtml(s, TopicInfo.class);
141+
if (resultInfo.isValid()) {
142+
return resultInfo;
143+
}
144+
// If not a valid topic, try parsing as error page
145+
return APIService.fruit().fromHtml(s, AppendTopicPageInfo.class);
146+
})
147+
.subscribe(new GeneralConsumer<BaseInfo>() {
139148
@Override
140-
public void onConsume(AppendTopicPageInfo pageInfo) {
141-
AppendTopicPageInfo.Problem problem = pageInfo.getProblem();
142-
if (problem != null) {
143-
StringBuilder msg = new StringBuilder();
144-
for (int i = 0; i < problem.getTips().size(); i++) {
145-
msg.append(i + 1).append(". ").append(problem.getTips().get(i)).append("\n");
149+
public void onConsume(BaseInfo baseInfo) {
150+
if (baseInfo instanceof TopicInfo) {
151+
// Actually a success! Treat it as such
152+
onAfterAppendTopic((TopicInfo) baseInfo);
153+
} else if (baseInfo instanceof AppendTopicPageInfo) {
154+
AppendTopicPageInfo pageInfo = (AppendTopicPageInfo) baseInfo;
155+
AppendTopicPageInfo.Problem problem = pageInfo.getProblem();
156+
if (problem != null) {
157+
StringBuilder msg = new StringBuilder();
158+
for (int i = 0; i < problem.getTips().size(); i++) {
159+
msg.append(i + 1).append(". ").append(problem.getTips().get(i)).append("\n");
160+
}
161+
new ConfirmDialog.Builder(getActivity())
162+
.title(problem.getTitle())
163+
.msg(msg.toString())
164+
.positiveText(R.string.ok)
165+
.build().show();
146166
}
147-
new ConfirmDialog.Builder(getActivity())
148-
.title(problem.getTitle())
149-
.msg(msg.toString())
150-
.positiveText(R.string.ok)
151-
.build().show();
152167
}
153168
}
154169
});

0 commit comments

Comments
 (0)