Skip to content
This repository has been archived by the owner on Mar 3, 2021. It is now read-only.

Commit

Permalink
Merge pull request #55 from mattermost/PLT-7531
Browse files Browse the repository at this point in the history
 PLT-7531 Adding support for v4
  • Loading branch information
coreyhulen committed Feb 2, 2018
2 parents 0510090 + 7638727 commit 5c3442d
Show file tree
Hide file tree
Showing 7 changed files with 84 additions and 96 deletions.
10 changes: 5 additions & 5 deletions 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"
Expand All @@ -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 {
Expand All @@ -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'
Expand Down
5 changes: 5 additions & 0 deletions app/src/main/java/com/mattermost/mattermost/MainActivity.java
Expand Up @@ -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;
Expand Down
Expand Up @@ -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;
Expand Down Expand Up @@ -93,16 +94,31 @@ private void doSelectServer() {
return;
}

MattermostService.service.initialLoad()
.then(new IResultListener<InitialLoad>() {
MattermostService.service.pingV4()
.then(new IResultListener<Ping>() {
@Override
public void onResult(Promise<InitialLoad> promise) {
public void onResult(Promise<Ping> 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<Ping>() {
@Override
public void onResult(Promise<Ping> 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);
Expand Down
10 changes: 10 additions & 0 deletions app/src/main/java/com/mattermost/model/Ping.java
@@ -0,0 +1,10 @@
/**
* 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;
}
117 changes: 36 additions & 81 deletions app/src/main/java/com/mattermost/service/MattermostService.java
Expand Up @@ -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;
Expand Down Expand Up @@ -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<User> 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<User> attachDevice() {
User user = new User();
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
Expand All @@ -127,51 +110,29 @@ public Promise<User> attachDevice() {

user.deviceId = "android:" + deviceId.toString();

return apiClient.attachDevice(user);
}

public Promise<InitialLoad> initialLoad() {
return apiClient.initialLoad();
}

// public Promise<Boolean> findTeamByName(String name) {
// User user = new User();
// user.name = name;
// return apiClient.findTeamByName(user);
// }
//
// public Promise<User> signup(String email, String name) {
// User user = new User();
// user.email = email;
// user.name = name;
// return apiClient.signup(user);
// }
//
//
//
// public Promise<User> 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<Ping> pingV4() {
return apiClient.pingV4();
}

public Promise<Ping> 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"));
Expand Down Expand Up @@ -199,32 +160,26 @@ 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();
}

public interface MattermostAPI {

@Headers("X-Requested-With: XMLHttpRequest")
@POST("/api/v3/users/attach_device")
Promise<User> attachDevice(@Body User user);
Promise<User> attachDeviceV3(@Body User user);

@Headers("X-Requested-With: XMLHttpRequest")
@POST("/api/v4/users/attach_device")
Promise<User> attachDeviceV4(@Body User user);

@Headers("X-Requested-With: XMLHttpRequest")
@GET("/api/v4/system/ping")
Promise<Ping> pingV4();

@Headers("X-Requested-With: XMLHttpRequest")
@GET("/api/v3/users/initial_load")
Promise<InitialLoad> initialLoad();

// @POST("/api/v1/users/login")
// Promise<User> login(@Body User user);
//
// @POST("/api/v1/users/send_password_reset")
// Promise<User> sendPaswordReset(@Body User user);
//
// @POST("/api/v1/teams/find_team_by_name")
// Promise<Boolean> findTeamByName(@Body User user);
//
// @POST("/api/v1/teams/email_teams")
// Promise<List<User>> findTeams(@Body User user);
//
// @POST("/api/v1/teams/signup")
// Promise<User> signup(@Body User user);
@GET("/api/v3/general/ping")
Promise<Ping> pingV3();
}
}
4 changes: 3 additions & 1 deletion build.gradle
Expand Up @@ -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
Expand All @@ -15,6 +16,7 @@ buildscript {
allprojects {
repositories {
jcenter()
google()
}
}

Expand Down
4 changes: 2 additions & 2 deletions 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

0 comments on commit 5c3442d

Please sign in to comment.