fix: recover master-agent takeover session on android
This commit is contained in:
@@ -40,7 +40,7 @@ public class MasterAgentTakeoverActivity extends BossScreenActivity {
|
||||
setRefreshing(true);
|
||||
executor.execute(() -> {
|
||||
try {
|
||||
BossApiClient.ApiResponse response = apiClient.getProjectAgentControls(projectId);
|
||||
BossApiClient.ApiResponse response = loadTakeoverControls();
|
||||
if (!response.ok()) {
|
||||
throw new IllegalStateException(response.message());
|
||||
}
|
||||
@@ -98,7 +98,7 @@ public class MasterAgentTakeoverActivity extends BossScreenActivity {
|
||||
setRefreshing(true);
|
||||
executor.execute(() -> {
|
||||
try {
|
||||
BossApiClient.ApiResponse response = apiClient.updateProjectTakeoverSettings(
|
||||
BossApiClient.ApiResponse response = saveTakeoverControls(
|
||||
projectId,
|
||||
null,
|
||||
enabled
|
||||
@@ -120,6 +120,44 @@ public class MasterAgentTakeoverActivity extends BossScreenActivity {
|
||||
});
|
||||
}
|
||||
|
||||
private BossApiClient.ApiResponse loadTakeoverControls() throws Exception {
|
||||
BossApiClient.ApiResponse response = apiClient.getProjectAgentControls(projectId);
|
||||
if (response.ok() || !isUnauthorized(response)) {
|
||||
return response;
|
||||
}
|
||||
BossApiClient.ApiResponse loginResponse = apiClient.autoLogin();
|
||||
if (!loginResponse.ok()) {
|
||||
return response;
|
||||
}
|
||||
return apiClient.getProjectAgentControls(projectId);
|
||||
}
|
||||
|
||||
private BossApiClient.ApiResponse saveTakeoverControls(
|
||||
String projectId,
|
||||
@Nullable Boolean takeoverEnabled,
|
||||
@Nullable Boolean globalTakeoverEnabled
|
||||
) throws Exception {
|
||||
BossApiClient.ApiResponse response = apiClient.updateProjectTakeoverSettings(
|
||||
projectId,
|
||||
takeoverEnabled,
|
||||
globalTakeoverEnabled
|
||||
);
|
||||
if (response.ok() || !isUnauthorized(response)) {
|
||||
return response;
|
||||
}
|
||||
BossApiClient.ApiResponse loginResponse = apiClient.autoLogin();
|
||||
if (!loginResponse.ok()) {
|
||||
return response;
|
||||
}
|
||||
return apiClient.updateProjectTakeoverSettings(projectId, takeoverEnabled, globalTakeoverEnabled);
|
||||
}
|
||||
|
||||
private boolean isUnauthorized(BossApiClient.ApiResponse response) {
|
||||
return response != null
|
||||
&& response.statusCode == 401
|
||||
&& "UNAUTHORIZED".equals(response.message());
|
||||
}
|
||||
|
||||
private void updateSaveAvailability() {
|
||||
if (headerActionButton != null) {
|
||||
headerActionButton.setEnabled(contentLoaded);
|
||||
|
||||
Reference in New Issue
Block a user