From 75d413931de37e138809ba033154a0d354931b52 Mon Sep 17 00:00:00 2001 From: Corey Hulen Date: Mon, 15 Jan 2018 19:03:57 -0800 Subject: [PATCH 1/2] PLT-7531 Adding support for v4 --- app/src/main/java/com/mattermost/model/Ping.java | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 app/src/main/java/com/mattermost/model/Ping.java diff --git a/app/src/main/java/com/mattermost/model/Ping.java b/app/src/main/java/com/mattermost/model/Ping.java new file mode 100644 index 0000000..c936b5c --- /dev/null +++ b/app/src/main/java/com/mattermost/model/Ping.java @@ -0,0 +1,8 @@ +package com.mattermost.model; + +/** + * Created by coreyhulen on 1/15/18. + */ + +public class Ping { +} From 7638727d44d063f83b9f2fbdbf1be2705745c4de Mon Sep 17 00:00:00 2001 From: Corey Hulen Date: Mon, 15 Jan 2018 19:04:09 -0800 Subject: [PATCH 2/2] PLT-7531 Adding support for v4 --- app/build.gradle | 10 +- .../mattermost/mattermost/MainActivity.java | 5 + .../mattermost/SelectServerActivity.java | 30 +++-- .../main/java/com/mattermost/model/Ping.java | 8 +- .../mattermost/service/MattermostService.java | 117 ++++++------------ build.gradle | 4 +- gradle/wrapper/gradle-wrapper.properties | 4 +- 7 files changed, 79 insertions(+), 99 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 56da59a..471c514 100755 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,8 +1,8 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 23 - buildToolsVersion "23.0.0" + compileSdkVersion 26 + buildToolsVersion "26.0.2" defaultConfig { applicationId "com.mattermost.mattermost" @@ -12,8 +12,8 @@ android { * convert application icon to meet desired lollipop guidelines, that is icon should be * flat and white*/ targetSdkVersion 20 - versionCode 396 - versionName "3.10.0" + versionCode 397 + versionName "3.10.1" } buildTypes { release { @@ -31,7 +31,7 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' - compile 'com.android.support:appcompat-v7:23.0.0' + compile 'com.android.support:appcompat-v7:26.0.2' compile 'com.squareup.okhttp:okhttp:2.5.0' compile 'com.squareup.okhttp:okhttp-urlconnection:2.5.0' compile 'com.google.android.gms:play-services-gcm:8.4.0' diff --git a/app/src/main/java/com/mattermost/mattermost/MainActivity.java b/app/src/main/java/com/mattermost/mattermost/MainActivity.java index 0197bca..f355dc8 100755 --- a/app/src/main/java/com/mattermost/mattermost/MainActivity.java +++ b/app/src/main/java/com/mattermost/mattermost/MainActivity.java @@ -223,6 +223,11 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) { return false; } + // Do not open in other browser if gitlab + if (uri.getPath().contains("/api/v4/user")) { + return false; + } + // Do not open in other browser if gitlab if (uri.getPath().contains("/users/sign_in")) { return false; diff --git a/app/src/main/java/com/mattermost/mattermost/SelectServerActivity.java b/app/src/main/java/com/mattermost/mattermost/SelectServerActivity.java index 5986e42..b5b036a 100755 --- a/app/src/main/java/com/mattermost/mattermost/SelectServerActivity.java +++ b/app/src/main/java/com/mattermost/mattermost/SelectServerActivity.java @@ -15,7 +15,8 @@ import android.widget.Spinner; import android.widget.TextView; -import com.mattermost.model.InitialLoad; +//import com.mattermost.model.InitialLoad; +import com.mattermost.model.Ping; import com.mattermost.service.IResultListener; import com.mattermost.service.MattermostService; import com.mattermost.service.Promise; @@ -93,16 +94,31 @@ private void doSelectServer() { return; } - MattermostService.service.initialLoad() - .then(new IResultListener() { + MattermostService.service.pingV4() + .then(new IResultListener() { @Override - public void onResult(Promise promise) { + public void onResult(Promise promise) { if (promise.getError() != null) { - MattermostService.service.removeBaseUrl(); - errorMessage.setText(R.string.error_mattermost_server); - Log.e("Error", promise.getError()); + MattermostService.service.pingV3() + .then(new IResultListener() { + @Override + public void onResult(Promise promise) { + if (promise.getError() != null) { + MattermostService.service.removeBaseUrl(); + errorMessage.setText(R.string.error_mattermost_server); + Log.e("Error", promise.getError()); + } else { + errorMessage.setText(""); + MattermostService.service.init(server); + Intent intent = new Intent(SelectServerActivity.this, MainActivity.class); + startActivity(intent); + finish(); + } + } + }); } else { errorMessage.setText(""); + MattermostService.service.SetV4(); MattermostService.service.init(server); Intent intent = new Intent(SelectServerActivity.this, MainActivity.class); startActivity(intent); diff --git a/app/src/main/java/com/mattermost/model/Ping.java b/app/src/main/java/com/mattermost/model/Ping.java index c936b5c..9e5aece 100644 --- a/app/src/main/java/com/mattermost/model/Ping.java +++ b/app/src/main/java/com/mattermost/model/Ping.java @@ -1,8 +1,10 @@ -package com.mattermost.model; - /** - * Created by coreyhulen on 1/15/18. + * Copyright (c) 2016-2018 Mattermost, Inc. All Rights Reserved. + * See License.txt for license information. */ +package com.mattermost.model; public class Ping { + public String status; + public String version; } diff --git a/app/src/main/java/com/mattermost/service/MattermostService.java b/app/src/main/java/com/mattermost/service/MattermostService.java index a7764f1..d458bd1 100755 --- a/app/src/main/java/com/mattermost/service/MattermostService.java +++ b/app/src/main/java/com/mattermost/service/MattermostService.java @@ -11,6 +11,7 @@ import com.mattermost.mattermost.R; import com.mattermost.model.User; +import com.mattermost.model.Ping; import com.mattermost.model.InitialLoad; import com.mattermost.service.jacksonconverter.JacksonConverterFactory; import com.mattermost.service.jacksonconverter.PromiseConverterFactory; @@ -94,28 +95,10 @@ public void init(String baseUrl) { if (url.endsWith("/")) { url = url.substring(0, url.length() - 1); } -// int i = url.lastIndexOf("/"); -// if (i != -1) { -// String team = url.substring(i + 1); -// setTeam(team); -// } apiClient = retrofit.create(MattermostAPI.class); } -// public Promise login(String email, String password) { -// User user = new User(); -// user.name = getTeam(); -// user.email = email; -// user.password = password; -// -// SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); -// String deviceId = sharedPreferences.getString("device_id", null); -// user.deviceId = "android:" + deviceId.toString(); -// -// return apiClient.login(user); -// } - public Promise attachDevice() { User user = new User(); SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); @@ -127,51 +110,29 @@ public Promise attachDevice() { user.deviceId = "android:" + deviceId.toString(); - return apiClient.attachDevice(user); - } - - public Promise initialLoad() { - return apiClient.initialLoad(); - } - -// public Promise findTeamByName(String name) { -// User user = new User(); -// user.name = name; -// return apiClient.findTeamByName(user); -// } -// -// public Promise signup(String email, String name) { -// User user = new User(); -// user.email = email; -// user.name = name; -// return apiClient.signup(user); -// } -// -// -// -// public Promise forgotPassword(String emailAddress) { -// User user = new User(); -// user.email = emailAddress; -// return apiClient.sendPaswordReset(user); -// } - -// public String getTeam() { -// if (team == null) { -// team = preferences.getString("Team", ""); -// } -// -// return team; -// } -// -// public void setTeam(String name) { -// if (name == null) { -// preferences.edit().remove("Team").commit(); -// } else { -// preferences.edit().putString("Team", name).commit(); -// } -// -// team = name; -// } + if (this.isV4()) { + return apiClient.attachDeviceV3(user); + } else{ + return apiClient.attachDeviceV3(user); + } + } + + + public Promise pingV4() { + return apiClient.pingV4(); + } + + public Promise pingV3() { + return apiClient.pingV3(); + } + + public boolean isV4() { + return "true".equals(preferences.getString("V4", "false")); + } + + public void SetV4() { + preferences.edit().putString("V4", "true").commit(); + } public boolean isAttached() { return "true".equals(preferences.getString("AttachedId", "false")); @@ -199,6 +160,7 @@ public void logout() { preferences.edit().remove("baseUrl").commit(); preferences.edit().remove("loggedIn").commit(); preferences.edit().remove("LastPath").commit(); + preferences.edit().remove("V4").commit(); cookieStore.clear(); } @@ -206,25 +168,18 @@ public interface MattermostAPI { @Headers("X-Requested-With: XMLHttpRequest") @POST("/api/v3/users/attach_device") - Promise attachDevice(@Body User user); + Promise attachDeviceV3(@Body User user); + + @Headers("X-Requested-With: XMLHttpRequest") + @POST("/api/v4/users/attach_device") + Promise attachDeviceV4(@Body User user); + + @Headers("X-Requested-With: XMLHttpRequest") + @GET("/api/v4/system/ping") + Promise pingV4(); @Headers("X-Requested-With: XMLHttpRequest") - @GET("/api/v3/users/initial_load") - Promise initialLoad(); - -// @POST("/api/v1/users/login") -// Promise login(@Body User user); -// -// @POST("/api/v1/users/send_password_reset") -// Promise sendPaswordReset(@Body User user); -// -// @POST("/api/v1/teams/find_team_by_name") -// Promise findTeamByName(@Body User user); -// -// @POST("/api/v1/teams/email_teams") -// Promise> findTeams(@Body User user); -// -// @POST("/api/v1/teams/signup") -// Promise signup(@Body User user); + @GET("/api/v3/general/ping") + Promise pingV3(); } } diff --git a/build.gradle b/build.gradle index 77ce66e..7e01a0a 100755 --- a/build.gradle +++ b/build.gradle @@ -3,9 +3,10 @@ buildscript { repositories { jcenter() + google() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.3' + classpath 'com.android.tools.build:gradle:3.0.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -15,6 +16,7 @@ buildscript { allprojects { repositories { jcenter() + google() } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index def8a68..33ebb4f 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Aug 22 11:12:49 EDT 2016 +#Mon Jan 15 14:07:55 PST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip