forked from Ivasoft/mattermost-mobile
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b4f474a74e | ||
|
|
50ce8b6974 | ||
|
|
910b67d47a | ||
|
|
85b7f3703f | ||
|
|
da3a0a22b2 | ||
|
|
408d184dea | ||
|
|
03488f6010 | ||
|
|
b0ff189147 | ||
|
|
0bd69fcd6b |
2
Makefile
2
Makefile
@@ -90,6 +90,8 @@ clean:
|
|||||||
rm -rf node_modules
|
rm -rf node_modules
|
||||||
rm -f .yarninstall
|
rm -f .yarninstall
|
||||||
rm -rf dist
|
rm -rf dist
|
||||||
|
rm -rf ios/build
|
||||||
|
rm -rf android/app/build
|
||||||
|
|
||||||
post-install:
|
post-install:
|
||||||
./node_modules/.bin/remotedev-debugger --hostname localhost --port 5678 --injectserver
|
./node_modules/.bin/remotedev-debugger --hostname localhost --port 5678 --injectserver
|
||||||
|
|||||||
@@ -46,13 +46,13 @@ android_library(
|
|||||||
|
|
||||||
android_build_config(
|
android_build_config(
|
||||||
name = 'build_config',
|
name = 'build_config',
|
||||||
package = 'com.mattermost',
|
package = 'com.mattermost.rnbeta',
|
||||||
)
|
)
|
||||||
|
|
||||||
android_resource(
|
android_resource(
|
||||||
name = 'res',
|
name = 'res',
|
||||||
res = 'src/main/res',
|
res = 'src/main/res',
|
||||||
package = 'com.mattermost',
|
package = 'com.mattermost.rnbeta',
|
||||||
)
|
)
|
||||||
|
|
||||||
android_binary(
|
android_binary(
|
||||||
|
|||||||
@@ -88,11 +88,11 @@ android {
|
|||||||
buildToolsVersion "25.0.1"
|
buildToolsVersion "25.0.1"
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "com.mattermost.react.native"
|
applicationId "com.mattermost.rnbeta"
|
||||||
minSdkVersion 16
|
minSdkVersion 16
|
||||||
targetSdkVersion 23
|
targetSdkVersion 23
|
||||||
versionCode 39
|
versionCode 41
|
||||||
versionName "1.0"
|
versionName "1.0.1"
|
||||||
multiDexEnabled true
|
multiDexEnabled true
|
||||||
ndk {
|
ndk {
|
||||||
abiFilters "armeabi-v7a", "x86"
|
abiFilters "armeabi-v7a", "x86"
|
||||||
|
|||||||
@@ -36,6 +36,68 @@
|
|||||||
"status": 2
|
"status": 2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"client_info": {
|
||||||
|
"mobilesdk_app_id": "1:184930218130:android:c7debfa7ea3f75a7",
|
||||||
|
"android_client_info": {
|
||||||
|
"package_name": "com.mattermost.rnbeta"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"oauth_client": [
|
||||||
|
{
|
||||||
|
"client_id": "184930218130-8nahrspll1opff0uogtkh2qsv8coqngo.apps.googleusercontent.com",
|
||||||
|
"client_type": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"api_key": [
|
||||||
|
{
|
||||||
|
"current_key": "AIzaSyCkZkU2ECVg-mmdCG5OoHHQXtKiENuvWPE"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"services": {
|
||||||
|
"analytics_service": {
|
||||||
|
"status": 1
|
||||||
|
},
|
||||||
|
"appinvite_service": {
|
||||||
|
"status": 1,
|
||||||
|
"other_platform_oauth_client": []
|
||||||
|
},
|
||||||
|
"ads_service": {
|
||||||
|
"status": 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"client_info": {
|
||||||
|
"mobilesdk_app_id": "1:184930218130:android:2db4058a5b5d6506",
|
||||||
|
"android_client_info": {
|
||||||
|
"package_name": "com.mattermost.rn"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"oauth_client": [
|
||||||
|
{
|
||||||
|
"client_id": "184930218130-8nahrspll1opff0uogtkh2qsv8coqngo.apps.googleusercontent.com",
|
||||||
|
"client_type": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"api_key": [
|
||||||
|
{
|
||||||
|
"current_key": "AIzaSyCkZkU2ECVg-mmdCG5OoHHQXtKiENuvWPE"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"services": {
|
||||||
|
"analytics_service": {
|
||||||
|
"status": 1
|
||||||
|
},
|
||||||
|
"appinvite_service": {
|
||||||
|
"status": 1,
|
||||||
|
"other_platform_oauth_client": []
|
||||||
|
},
|
||||||
|
"ads_service": {
|
||||||
|
"status": 2
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"configuration_version": "1"
|
"configuration_version": "1"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="com.mattermost"
|
package="com.mattermost.rnbeta"
|
||||||
android:versionCode="1"
|
android:versionCode="1"
|
||||||
android:versionName="1.0">
|
android:versionName="1.0">
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mattermost;
|
package com.mattermost.rnbeta;
|
||||||
|
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mattermost;
|
package com.mattermost.rnbeta;
|
||||||
|
|
||||||
import com.github.yamill.orientation.OrientationPackage;
|
import com.github.yamill.orientation.OrientationPackage;
|
||||||
import com.psykar.cookiemanager.CookieManagerPackage;
|
import com.psykar.cookiemanager.CookieManagerPackage;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mattermost;
|
package com.mattermost.rnbeta;
|
||||||
|
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.mattermost;
|
package com.mattermost.rnbeta;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
<resources>
|
<resources>
|
||||||
|
|
||||||
|
|
||||||
<string name="app_name">Mattermost</string>
|
<string name="app_name">Mattermost Beta</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ buildscript {
|
|||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:2.2.+'
|
classpath 'com.android.tools.build:gradle:2.2.+'
|
||||||
classpath 'com.google.gms:google-services:3.0.0'
|
classpath 'com.google.gms:google-services:3.1.0'
|
||||||
|
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
// NOTE: Do not place your application dependencies here; they belong
|
||||||
// in the individual module build.gradle files
|
// in the individual module build.gradle files
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ export default class Badge extends PureComponent {
|
|||||||
super(props);
|
super(props);
|
||||||
|
|
||||||
this.width = 0;
|
this.width = 0;
|
||||||
|
this.mounted = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillMount() {
|
componentWillMount() {
|
||||||
@@ -45,12 +46,26 @@ export default class Badge extends PureComponent {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
this.mounted = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
componentWillUnmount() {
|
||||||
|
this.mounted = false;
|
||||||
|
}
|
||||||
|
|
||||||
handlePress = () => {
|
handlePress = () => {
|
||||||
if (this.props.onPress) {
|
if (this.props.onPress) {
|
||||||
this.props.onPress();
|
this.props.onPress();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
setNativeProps = (props) => {
|
||||||
|
if (this.mounted && this.refs.badgeContainer) {
|
||||||
|
this.refs.badgeContainer.setNativeProps(props);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
onLayout = (e) => {
|
onLayout = (e) => {
|
||||||
let width;
|
let width;
|
||||||
|
|
||||||
@@ -66,7 +81,7 @@ export default class Badge extends PureComponent {
|
|||||||
this.width = width;
|
this.width = width;
|
||||||
const height = Math.max(e.nativeEvent.layout.height, this.props.minHeight);
|
const height = Math.max(e.nativeEvent.layout.height, this.props.minHeight);
|
||||||
const borderRadius = height / 2;
|
const borderRadius = height / 2;
|
||||||
this.refs.badgeContainer.setNativeProps({
|
this.setNativeProps({
|
||||||
style: {
|
style: {
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
@@ -74,7 +89,7 @@ export default class Badge extends PureComponent {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.refs.badgeContainer.setNativeProps({
|
this.setNativeProps({
|
||||||
style: {
|
style: {
|
||||||
display: 'flex'
|
display: 'flex'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
import React, {PureComponent} from 'react';
|
import React, {PureComponent} from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import {FlatList, RefreshControl, ScrollView, StyleSheet, View} from 'react-native';
|
import {FlatList, Platform, RefreshControl, ScrollView, StyleSheet, View} from 'react-native';
|
||||||
|
|
||||||
import VirtualList from './virtual_list';
|
import VirtualList from './virtual_list';
|
||||||
|
|
||||||
@@ -129,11 +129,21 @@ const styles = StyleSheet.create({
|
|||||||
container: {
|
container: {
|
||||||
flex: 1
|
flex: 1
|
||||||
},
|
},
|
||||||
vertical: {
|
vertical: Platform.select({
|
||||||
transform: [{scaleY: -1}]
|
android: {
|
||||||
},
|
scaleY: -1
|
||||||
horizontal: {
|
},
|
||||||
transform: [{scaleX: -1}]
|
ios: {
|
||||||
}
|
transform: [{scaleY: -1}]
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
horizontal: Platform.select({
|
||||||
|
android: {
|
||||||
|
scaleX: -1
|
||||||
|
},
|
||||||
|
ios: {
|
||||||
|
transform: [{scaleX: -1}]
|
||||||
|
}
|
||||||
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -118,14 +118,15 @@ class SelectServer extends PureComponent {
|
|||||||
|
|
||||||
onClick = async () => {
|
onClick = async () => {
|
||||||
const preUrl = urlParse(this.props.serverUrl, true);
|
const preUrl = urlParse(this.props.serverUrl, true);
|
||||||
const url = preUrl.protocol + '//' + preUrl.host;
|
const url = stripTrailingSlashes(preUrl.protocol + '//' + preUrl.host);
|
||||||
let error = null;
|
let error = null;
|
||||||
|
|
||||||
Keyboard.dismiss();
|
Keyboard.dismiss();
|
||||||
|
|
||||||
if (isValidUrl(url)) {
|
if (isValidUrl(url)) {
|
||||||
Client4.setUrl(stripTrailingSlashes(url));
|
Client4.setUrl(url);
|
||||||
Client.setUrl(stripTrailingSlashes(url));
|
Client.setUrl(url);
|
||||||
|
this.props.actions.handleServerUrlChanged(url);
|
||||||
await this.props.actions.getPing();
|
await this.props.actions.getPing();
|
||||||
} else {
|
} else {
|
||||||
error = {
|
error = {
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import PropTypes from 'prop-types';
|
|||||||
import {injectIntl, intlShape} from 'react-intl';
|
import {injectIntl, intlShape} from 'react-intl';
|
||||||
import {
|
import {
|
||||||
InteractionManager,
|
InteractionManager,
|
||||||
|
Text,
|
||||||
|
StyleSheet,
|
||||||
View,
|
View,
|
||||||
WebView
|
WebView
|
||||||
} from 'react-native';
|
} from 'react-native';
|
||||||
@@ -17,6 +19,9 @@ import {ViewTypes} from 'app/constants';
|
|||||||
import Loading from 'app/components/loading';
|
import Loading from 'app/components/loading';
|
||||||
import StatusBar from 'app/components/status_bar';
|
import StatusBar from 'app/components/status_bar';
|
||||||
import PushNotifications from 'app/push_notifications';
|
import PushNotifications from 'app/push_notifications';
|
||||||
|
import {changeOpacity, makeStyleSheetFromTheme} from 'app/utils/theme';
|
||||||
|
|
||||||
|
const jsCode = 'window.postMessage(document.body.innerText)';
|
||||||
|
|
||||||
class SSO extends PureComponent {
|
class SSO extends PureComponent {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
@@ -35,6 +40,11 @@ class SSO extends PureComponent {
|
|||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
|
|
||||||
|
this.state = {
|
||||||
|
error: null,
|
||||||
|
renderWebView: false
|
||||||
|
};
|
||||||
|
|
||||||
switch (props.ssoType) {
|
switch (props.ssoType) {
|
||||||
case ViewTypes.GITLAB:
|
case ViewTypes.GITLAB:
|
||||||
this.loginUrl = `${props.serverUrl}/oauth/gitlab/mobile_login`;
|
this.loginUrl = `${props.serverUrl}/oauth/gitlab/mobile_login`;
|
||||||
@@ -49,7 +59,7 @@ class SSO extends PureComponent {
|
|||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
InteractionManager.runAfterInteractions(() => {
|
InteractionManager.runAfterInteractions(() => {
|
||||||
this.setState({renderWebview: true});
|
this.setState({renderWebView: true});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,6 +95,25 @@ class SSO extends PureComponent {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
onMessage = (event) => {
|
||||||
|
try {
|
||||||
|
const response = JSON.parse(event.nativeEvent.data);
|
||||||
|
if (response) {
|
||||||
|
const {
|
||||||
|
id,
|
||||||
|
message,
|
||||||
|
request_id: rId,
|
||||||
|
status_code: statusCode
|
||||||
|
} = response;
|
||||||
|
if (rId && id && message && statusCode !== 200) {
|
||||||
|
this.setState({error: message});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
onNavigationStateChange = (navState) => {
|
onNavigationStateChange = (navState) => {
|
||||||
const {url} = navState;
|
const {url} = navState;
|
||||||
|
|
||||||
@@ -93,7 +122,7 @@ class SSO extends PureComponent {
|
|||||||
const token = res.MMAUTHTOKEN;
|
const token = res.MMAUTHTOKEN;
|
||||||
|
|
||||||
if (token) {
|
if (token) {
|
||||||
this.setState({renderWebview: false});
|
this.setState({renderWebView: false});
|
||||||
const {
|
const {
|
||||||
getSession,
|
getSession,
|
||||||
handleSuccessfulLogin,
|
handleSuccessfulLogin,
|
||||||
@@ -111,18 +140,23 @@ class SSO extends PureComponent {
|
|||||||
};
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
if (!this.state || !this.state.renderWebview) {
|
const {theme} = this.props;
|
||||||
return (
|
const {error, renderWebView} = this.state;
|
||||||
<View style={{flex: 1}}>
|
const style = getStyleSheet(theme);
|
||||||
<StatusBar/>
|
|
||||||
<Loading/>
|
let content;
|
||||||
|
if (!renderWebView) {
|
||||||
|
content = (
|
||||||
|
<Loading/>
|
||||||
|
);
|
||||||
|
} else if (error) {
|
||||||
|
content = (
|
||||||
|
<View style={style.errorContainer}>
|
||||||
|
<Text style={style.errorText}>{error}</Text>
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
}
|
} else {
|
||||||
|
content = (
|
||||||
return (
|
|
||||||
<View style={{flex: 1}}>
|
|
||||||
<StatusBar/>
|
|
||||||
<WebView
|
<WebView
|
||||||
source={{uri: this.loginUrl}}
|
source={{uri: this.loginUrl}}
|
||||||
javaScriptEnabledAndroid={true}
|
javaScriptEnabledAndroid={true}
|
||||||
@@ -132,10 +166,36 @@ class SSO extends PureComponent {
|
|||||||
onNavigationStateChange={this.onNavigationStateChange}
|
onNavigationStateChange={this.onNavigationStateChange}
|
||||||
onShouldStartLoadWithRequest={() => true}
|
onShouldStartLoadWithRequest={() => true}
|
||||||
renderLoading={() => (<Loading/>)}
|
renderLoading={() => (<Loading/>)}
|
||||||
|
onMessage={this.onMessage}
|
||||||
|
injectedJavaScript={jsCode}
|
||||||
/>
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<View style={{flex: 1}}>
|
||||||
|
<StatusBar/>
|
||||||
|
{content}
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const getStyleSheet = makeStyleSheetFromTheme((theme) => {
|
||||||
|
return StyleSheet.create({
|
||||||
|
errorContainer: {
|
||||||
|
alignItems: 'center',
|
||||||
|
flex: 1,
|
||||||
|
marginTop: 40
|
||||||
|
},
|
||||||
|
errorText: {
|
||||||
|
color: changeOpacity(theme.centerChannelColor, 0.4),
|
||||||
|
fontSize: 16,
|
||||||
|
fontWeight: '400',
|
||||||
|
lineHeight: 23,
|
||||||
|
paddingHorizontal: 30
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
export default injectIntl(SSO);
|
export default injectIntl(SSO);
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ export function isValidUrl(url = '') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function stripTrailingSlashes(url = '') {
|
export function stripTrailingSlashes(url = '') {
|
||||||
return url.replace(/\/+$/, '').trim();
|
return url.trim().replace(/\/+$/, '');
|
||||||
}
|
}
|
||||||
|
|
||||||
export function removeProtocol(url = '') {
|
export function removeProtocol(url = '') {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ skip_docs
|
|||||||
|
|
||||||
platform :ios do
|
platform :ios do
|
||||||
before_all do |lane|
|
before_all do |lane|
|
||||||
if lane == :beta or lane == :release
|
if lane == :beta
|
||||||
ensure_git_branch(
|
ensure_git_branch(
|
||||||
branch: 'master'
|
branch: 'master'
|
||||||
)
|
)
|
||||||
@@ -12,7 +12,7 @@ platform :ios do
|
|||||||
end
|
end
|
||||||
|
|
||||||
after_all do |lane|
|
after_all do |lane|
|
||||||
if lane == :beta or lane == :release
|
if lane == :beta
|
||||||
reset_git_repo(
|
reset_git_repo(
|
||||||
force: true,
|
force: true,
|
||||||
skip_clean: true
|
skip_clean: true
|
||||||
@@ -26,7 +26,7 @@ platform :ios do
|
|||||||
desc 'Build Release file'
|
desc 'Build Release file'
|
||||||
desc 'This will also make sure the profile is up to date'
|
desc 'This will also make sure the profile is up to date'
|
||||||
lane :dev do
|
lane :dev do
|
||||||
match(type: 'adhoc')
|
match(type: 'adhoc', app_identifier: 'com.mattermost.rnbeta')
|
||||||
|
|
||||||
build_ios({
|
build_ios({
|
||||||
release: false,
|
release: false,
|
||||||
@@ -39,7 +39,7 @@ platform :ios do
|
|||||||
desc 'Submit a new Beta Build to Apple TestFlight'
|
desc 'Submit a new Beta Build to Apple TestFlight'
|
||||||
desc 'This will also make sure the profile is up to date'
|
desc 'This will also make sure the profile is up to date'
|
||||||
lane :beta do
|
lane :beta do
|
||||||
match(type: 'appstore')
|
match(type: 'appstore', app_identifier: 'com.mattermost.rnbeta')
|
||||||
|
|
||||||
build_ios({
|
build_ios({
|
||||||
release: true,
|
release: true,
|
||||||
@@ -83,40 +83,52 @@ platform :ios do
|
|||||||
|
|
||||||
desc 'Deploy a new version to the App Store'
|
desc 'Deploy a new version to the App Store'
|
||||||
lane :release do
|
lane :release do
|
||||||
match(type: 'appstore')
|
ensure_git_branch(
|
||||||
|
branch: 'master'
|
||||||
|
)
|
||||||
|
|
||||||
|
match(type: 'appstore', app_identifier: 'com.mattermost.rn')
|
||||||
|
|
||||||
# snapshot
|
# snapshot
|
||||||
|
|
||||||
|
update_app_identifier(
|
||||||
|
xcodeproj: './ios/Mattermost.xcodeproj',
|
||||||
|
plist_path: 'Mattermost/Info.plist',
|
||||||
|
app_identifier: 'com.mattermost.rn'
|
||||||
|
)
|
||||||
|
update_info_plist(
|
||||||
|
xcodeproj: './ios/Mattermost.xcodeproj',
|
||||||
|
plist_path: 'Mattermost/Info.plist',
|
||||||
|
display_name: 'Mattermost'
|
||||||
|
)
|
||||||
|
|
||||||
|
sh 'cp -R ../assets/release/icons/ios/* ../ios/Mattermost/Images.xcassets/AppIcon.appiconset/'
|
||||||
|
|
||||||
build_ios({
|
build_ios({
|
||||||
release: true,
|
release: true,
|
||||||
increment_build: true,
|
increment_build: false,
|
||||||
ensure_git_status_clean: true,
|
ensure_git_status_clean: false,
|
||||||
method: 'app-store'
|
method: 'app-store'
|
||||||
})
|
})
|
||||||
|
|
||||||
deliver(force: true)
|
# deliver(
|
||||||
|
# force: true,
|
||||||
|
# skip_screenshots: true,
|
||||||
|
# skip_metadata: true,
|
||||||
|
# submit_for_review: false, #lets try this after the first release
|
||||||
|
# automatic_release: false #lets try this after the first release
|
||||||
|
# )
|
||||||
|
|
||||||
commit = last_git_commit
|
### We are going to publish the app to the testflight first and not deliver it directly to the app store
|
||||||
|
pilot(skip_waiting_for_build_processing: true)
|
||||||
push_to_git_remote(
|
|
||||||
remote: 'origin',
|
|
||||||
local_branch: 'ios-release',
|
|
||||||
force: false,
|
|
||||||
tags: false
|
|
||||||
)
|
|
||||||
|
|
||||||
unless ENV['GITHUB_TOKEN'].nil?
|
|
||||||
create_pull_request(
|
|
||||||
api_token: ENV['GITHUB_TOKEN'],
|
|
||||||
repo: 'mattermost/mattermost-mobile',
|
|
||||||
head: 'mattermost:ios-release',
|
|
||||||
base: 'master',
|
|
||||||
title: "IOS #{commit[:message]}"
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
# frameit
|
# frameit
|
||||||
|
|
||||||
|
reset_git_repo(
|
||||||
|
force: true,
|
||||||
|
skip_clean: true
|
||||||
|
)
|
||||||
|
|
||||||
if ENV['MATTERMOST_WEBHOOK_URL']
|
if ENV['MATTERMOST_WEBHOOK_URL']
|
||||||
appstore_url = ENV['APPSTORE_URL']
|
appstore_url = ENV['APPSTORE_URL']
|
||||||
send_message_for_ios(
|
send_message_for_ios(
|
||||||
@@ -198,7 +210,7 @@ end
|
|||||||
|
|
||||||
platform :android do
|
platform :android do
|
||||||
before_all do |lane|
|
before_all do |lane|
|
||||||
if lane == :alpha or lane == :release
|
if lane == :alpha
|
||||||
ensure_git_branch(
|
ensure_git_branch(
|
||||||
branch: 'master'
|
branch: 'master'
|
||||||
)
|
)
|
||||||
@@ -207,7 +219,7 @@ platform :android do
|
|||||||
end
|
end
|
||||||
|
|
||||||
after_all do |lane|
|
after_all do |lane|
|
||||||
if lane == :alpha or lane == :release
|
if lane == :alpha
|
||||||
reset_git_repo(
|
reset_git_repo(
|
||||||
force: true,
|
force: true,
|
||||||
skip_clean: true
|
skip_clean: true
|
||||||
@@ -268,36 +280,84 @@ platform :android do
|
|||||||
|
|
||||||
desc 'Deploy a new version to Google Play'
|
desc 'Deploy a new version to Google Play'
|
||||||
lane :release do
|
lane :release do
|
||||||
|
ensure_git_branch(
|
||||||
|
branch: 'master'
|
||||||
|
)
|
||||||
|
android_change_package_identifier(newIdentifier: 'com.mattermost.rn', manifest: './android/app/src/main/AndroidManifest.xml')
|
||||||
|
android_change_string_app_name(newName: 'Mattermost', stringsFile: './android/app/src/main/res/values/strings.xml')
|
||||||
|
android_update_application_id(app_folder_name: 'android/app', application_id: 'com.mattermost.rn')
|
||||||
|
|
||||||
|
sh 'mv ../android/app/src/main/java/com/mattermost/rnbeta/ ../android/app/src/main/java/com/mattermost/rn/'
|
||||||
|
sh 'cp -R ../assets/release/icons/android/* ../android/app/src/main/res/'
|
||||||
|
|
||||||
|
find_replace_string(
|
||||||
|
path_to_file: './android/app/src/main/java/com/mattermost/rn/MainApplication.java',
|
||||||
|
old_string: 'return BuildConfig.DEBUG;',
|
||||||
|
new_string: 'return false;'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
find_replace_string(
|
||||||
|
path_to_file: './android/app/src/main/java/com/mattermost/rn/MainApplication.java',
|
||||||
|
old_string: 'package com.mattermost.rnbeta;',
|
||||||
|
new_string: 'package com.mattermost.rn;'
|
||||||
|
)
|
||||||
|
|
||||||
|
find_replace_string(
|
||||||
|
path_to_file: './android/app/src/main/java/com/mattermost/rn/CustomPushNotification.java',
|
||||||
|
old_string: 'package com.mattermost.rnbeta;',
|
||||||
|
new_string: 'package com.mattermost.rn;'
|
||||||
|
)
|
||||||
|
|
||||||
|
find_replace_string(
|
||||||
|
path_to_file: './android/app/src/main/java/com/mattermost/rn/MainActivity.java',
|
||||||
|
old_string: 'package com.mattermost.rnbeta;',
|
||||||
|
new_string: 'package com.mattermost.rn;'
|
||||||
|
)
|
||||||
|
|
||||||
|
find_replace_string(
|
||||||
|
path_to_file: './android/app/src/main/java/com/mattermost/rn/NotificationsLifecycleFacade.java',
|
||||||
|
old_string: 'package com.mattermost.rnbeta;',
|
||||||
|
new_string: 'package com.mattermost.rn;'
|
||||||
|
)
|
||||||
|
|
||||||
|
find_replace_string(
|
||||||
|
path_to_file: './android/app/BUCK',
|
||||||
|
old_string: 'package com.mattermost.rnbeta;',
|
||||||
|
new_string: 'package com.mattermost.rn;'
|
||||||
|
)
|
||||||
|
|
||||||
|
find_replace_string(
|
||||||
|
path_to_file: './fastlane/metadata/android/en-US/title.txt',
|
||||||
|
old_string: 'Mattermost Beta',
|
||||||
|
new_string: 'Mattermost;'
|
||||||
|
)
|
||||||
|
|
||||||
build_android({
|
build_android({
|
||||||
release: true,
|
release: true,
|
||||||
increment_build: true,
|
increment_build: false,
|
||||||
ensure_git_status_clean: true
|
ensure_git_status_clean: false
|
||||||
})
|
})
|
||||||
|
|
||||||
|
# supply(
|
||||||
|
# track: "production",
|
||||||
|
# apk: "#{lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]}",
|
||||||
|
# )
|
||||||
|
|
||||||
|
# We are going to upload the build to the beta lane and not directly to production so it can be promoted later
|
||||||
supply(
|
supply(
|
||||||
track: "production",
|
track: 'beta',
|
||||||
apk: "#{lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]}",
|
apk: "#{lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]}",
|
||||||
)
|
)
|
||||||
|
|
||||||
commit = last_git_commit
|
|
||||||
|
|
||||||
push_to_git_remote(
|
sh 'mv ../android/app/src/main/java/com/mattermost/rn/ ../android/app/src/main/java/com/mattermost/rnbeta/'
|
||||||
remote: 'origin',
|
|
||||||
local_branch: 'android-release',
|
reset_git_repo(
|
||||||
force: false,
|
force: true,
|
||||||
tags: false
|
skip_clean: true
|
||||||
)
|
)
|
||||||
|
|
||||||
unless ENV['GITHUB_TOKEN'].nil?
|
|
||||||
create_pull_request(
|
|
||||||
api_token: ENV['GITHUB_TOKEN'],
|
|
||||||
repo: 'mattermost/mattermost-mobile',
|
|
||||||
head: 'mattermost:android-release',
|
|
||||||
base: 'master',
|
|
||||||
title: "Android #{commit[:message]}"
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
if ENV['MATTERMOST_WEBHOOK_URL']
|
if ENV['MATTERMOST_WEBHOOK_URL']
|
||||||
google_play_url = ENV['GOOGLE_PLAY_URL']
|
google_play_url = ENV['GOOGLE_PLAY_URL']
|
||||||
send_message_for_android(
|
send_message_for_android(
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ GEM
|
|||||||
faraday_middleware (0.11.0.1)
|
faraday_middleware (0.11.0.1)
|
||||||
faraday (>= 0.7.4, < 1.0)
|
faraday (>= 0.7.4, < 1.0)
|
||||||
fastimage (2.1.0)
|
fastimage (2.1.0)
|
||||||
fastlane (2.44.1)
|
fastlane (2.47.0)
|
||||||
CFPropertyList (>= 2.3, < 3.0.0)
|
CFPropertyList (>= 2.3, < 3.0.0)
|
||||||
addressable (>= 2.3, < 3.0.0)
|
addressable (>= 2.3, < 3.0.0)
|
||||||
babosa (>= 1.0.2, < 2.0.0)
|
babosa (>= 1.0.2, < 2.0.0)
|
||||||
@@ -64,8 +64,8 @@ GEM
|
|||||||
mime-types (~> 3.0)
|
mime-types (~> 3.0)
|
||||||
representable (~> 3.0)
|
representable (~> 3.0)
|
||||||
retriable (>= 2.0, < 4.0)
|
retriable (>= 2.0, < 4.0)
|
||||||
googleauth (0.5.1)
|
googleauth (0.5.2)
|
||||||
faraday (~> 0.9)
|
faraday (~> 0.12)
|
||||||
jwt (~> 1.4)
|
jwt (~> 1.4)
|
||||||
logging (~> 2.0)
|
logging (~> 2.0)
|
||||||
memoist (~> 0.12)
|
memoist (~> 0.12)
|
||||||
@@ -118,7 +118,7 @@ GEM
|
|||||||
unf_ext (0.0.7.4)
|
unf_ext (0.0.7.4)
|
||||||
unicode-display_width (1.3.0)
|
unicode-display_width (1.3.0)
|
||||||
word_wrap (1.0.0)
|
word_wrap (1.0.0)
|
||||||
xcodeproj (1.5.0)
|
xcodeproj (1.5.1)
|
||||||
CFPropertyList (~> 2.3.3)
|
CFPropertyList (~> 2.3.3)
|
||||||
claide (>= 1.0.2, < 2.0)
|
claide (>= 1.0.2, < 2.0)
|
||||||
colored2 (~> 3.1)
|
colored2 (~> 3.1)
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
Mattermost 2017 - Beta
|
Mattermost Beta
|
||||||
|
|||||||
@@ -1320,7 +1320,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements;
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
CURRENT_PROJECT_VERSION = 39;
|
CURRENT_PROJECT_VERSION = 41;
|
||||||
DEAD_CODE_STRIPPING = NO;
|
DEAD_CODE_STRIPPING = NO;
|
||||||
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
||||||
HEADER_SEARCH_PATHS = (
|
HEADER_SEARCH_PATHS = (
|
||||||
@@ -1338,7 +1338,7 @@
|
|||||||
"-ObjC",
|
"-ObjC",
|
||||||
"-lc++",
|
"-lc++",
|
||||||
);
|
);
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.mattermost.react.native;
|
PRODUCT_BUNDLE_IDENTIFIER = com.mattermost.rnbeta;
|
||||||
PRODUCT_NAME = Mattermost;
|
PRODUCT_NAME = Mattermost;
|
||||||
PROVISIONING_PROFILE = "";
|
PROVISIONING_PROFILE = "";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -1353,7 +1353,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements;
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
CURRENT_PROJECT_VERSION = 39;
|
CURRENT_PROJECT_VERSION = 41;
|
||||||
DEAD_CODE_STRIPPING = NO;
|
DEAD_CODE_STRIPPING = NO;
|
||||||
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
||||||
HEADER_SEARCH_PATHS = (
|
HEADER_SEARCH_PATHS = (
|
||||||
@@ -1371,7 +1371,7 @@
|
|||||||
"-ObjC",
|
"-ObjC",
|
||||||
"-lc++",
|
"-lc++",
|
||||||
);
|
);
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.mattermost.react.native;
|
PRODUCT_BUNDLE_IDENTIFIER = com.mattermost.rnbeta;
|
||||||
PRODUCT_NAME = Mattermost;
|
PRODUCT_NAME = Mattermost;
|
||||||
PROVISIONING_PROFILE = "";
|
PROVISIONING_PROFILE = "";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
|||||||
@@ -1,94 +1,96 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>CFBundleDevelopmentRegion</key>
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
<string>en</string>
|
<string>en</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleDisplayName</key>
|
||||||
<string>$(EXECUTABLE_NAME)</string>
|
<string>Mattermost Beta</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
<string>$(EXECUTABLE_NAME)</string>
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>6.0</string>
|
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||||
<key>CFBundleName</key>
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
<string>$(PRODUCT_NAME)</string>
|
<string>6.0</string>
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundleName</key>
|
||||||
<string>APPL</string>
|
<string>$(PRODUCT_NAME)</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>1.0</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>????</string>
|
<string>1.0.1</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>39</string>
|
<string>????</string>
|
||||||
<key>ITSAppUsesNonExemptEncryption</key>
|
<key>CFBundleVersion</key>
|
||||||
<false/>
|
<string>41</string>
|
||||||
<key>LSRequiresIPhoneOS</key>
|
<key>ITSAppUsesNonExemptEncryption</key>
|
||||||
<true/>
|
<false/>
|
||||||
<key>NSAllowsArbitraryLoads</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>NSAppTransportSecurity</key>
|
<key>NSAllowsArbitraryLoads</key>
|
||||||
<dict>
|
<true/>
|
||||||
<key>NSAllowsArbitraryLoads</key>
|
<key>NSAppTransportSecurity</key>
|
||||||
<true/>
|
<dict>
|
||||||
<key>NSExceptionDomains</key>
|
<key>NSAllowsArbitraryLoads</key>
|
||||||
<dict>
|
<true/>
|
||||||
<key>localhost</key>
|
<key>NSExceptionDomains</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
<key>localhost</key>
|
||||||
<true/>
|
<dict>
|
||||||
</dict>
|
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
||||||
</dict>
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
<key>NSCameraUsageDescription</key>
|
</dict>
|
||||||
<string>Take a Photo or Video and upload it to your mattermost instance</string>
|
</dict>
|
||||||
<key>NSLocationWhenInUseUsageDescription</key>
|
<key>NSCameraUsageDescription</key>
|
||||||
<string/>
|
<string>Take a Photo or Video and upload it to your mattermost instance</string>
|
||||||
<key>NSPhotoLibraryUsageDescription</key>
|
<key>NSLocationWhenInUseUsageDescription</key>
|
||||||
<string>Upload Photos and Videos to your Mattermost instance</string>
|
<string></string>
|
||||||
<key>UIAppFonts</key>
|
<key>NSPhotoLibraryUsageDescription</key>
|
||||||
<array>
|
<string>Upload Photos and Videos to your Mattermost instance</string>
|
||||||
<string>Entypo.ttf</string>
|
<key>UIAppFonts</key>
|
||||||
<string>EvilIcons.ttf</string>
|
<array>
|
||||||
<string>FontAwesome.ttf</string>
|
<string>Entypo.ttf</string>
|
||||||
<string>Foundation.ttf</string>
|
<string>EvilIcons.ttf</string>
|
||||||
<string>Ionicons.ttf</string>
|
<string>FontAwesome.ttf</string>
|
||||||
<string>MaterialIcons.ttf</string>
|
<string>Foundation.ttf</string>
|
||||||
<string>Octicons.ttf</string>
|
<string>Ionicons.ttf</string>
|
||||||
<string>Zocial.ttf</string>
|
<string>MaterialIcons.ttf</string>
|
||||||
<string>Entypo.ttf</string>
|
<string>Octicons.ttf</string>
|
||||||
<string>EvilIcons.ttf</string>
|
<string>Zocial.ttf</string>
|
||||||
<string>FontAwesome.ttf</string>
|
<string>Entypo.ttf</string>
|
||||||
<string>Foundation.ttf</string>
|
<string>EvilIcons.ttf</string>
|
||||||
<string>Ionicons.ttf</string>
|
<string>FontAwesome.ttf</string>
|
||||||
<string>MaterialCommunityIcons.ttf</string>
|
<string>Foundation.ttf</string>
|
||||||
<string>MaterialIcons.ttf</string>
|
<string>Ionicons.ttf</string>
|
||||||
<string>Octicons.ttf</string>
|
<string>MaterialCommunityIcons.ttf</string>
|
||||||
<string>SimpleLineIcons.ttf</string>
|
<string>MaterialIcons.ttf</string>
|
||||||
<string>Zocial.ttf</string>
|
<string>Octicons.ttf</string>
|
||||||
<string>OpenSans-Bold.ttf</string>
|
<string>SimpleLineIcons.ttf</string>
|
||||||
<string>OpenSans-BoldItalic.ttf</string>
|
<string>Zocial.ttf</string>
|
||||||
<string>OpenSans-ExtraBold.ttf</string>
|
<string>OpenSans-Bold.ttf</string>
|
||||||
<string>OpenSans-ExtraBoldItalic.ttf</string>
|
<string>OpenSans-BoldItalic.ttf</string>
|
||||||
<string>OpenSans-Italic.ttf</string>
|
<string>OpenSans-ExtraBold.ttf</string>
|
||||||
<string>OpenSans-Light.ttf</string>
|
<string>OpenSans-ExtraBoldItalic.ttf</string>
|
||||||
<string>OpenSans-LightItalic.ttf</string>
|
<string>OpenSans-Italic.ttf</string>
|
||||||
<string>OpenSans-Regular.ttf</string>
|
<string>OpenSans-Light.ttf</string>
|
||||||
<string>OpenSans-Semibold.ttf</string>
|
<string>OpenSans-LightItalic.ttf</string>
|
||||||
<string>OpenSans-SemiboldItalic.ttf</string>
|
<string>OpenSans-Regular.ttf</string>
|
||||||
</array>
|
<string>OpenSans-Semibold.ttf</string>
|
||||||
<key>UILaunchStoryboardName</key>
|
<string>OpenSans-SemiboldItalic.ttf</string>
|
||||||
<string>LaunchScreen</string>
|
</array>
|
||||||
<key>UIRequiredDeviceCapabilities</key>
|
<key>UILaunchStoryboardName</key>
|
||||||
<array>
|
<string>LaunchScreen</string>
|
||||||
<string>armv7</string>
|
<key>UIRequiredDeviceCapabilities</key>
|
||||||
</array>
|
<array>
|
||||||
<key>UISupportedInterfaceOrientations</key>
|
<string>armv7</string>
|
||||||
<array>
|
</array>
|
||||||
<string>UIInterfaceOrientationPortrait</string>
|
<key>UISupportedInterfaceOrientations</key>
|
||||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
<array>
|
||||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
<string>UIInterfaceOrientationPortrait</string>
|
||||||
</array>
|
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||||
<false/>
|
</array>
|
||||||
</dict>
|
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||||
|
<false/>
|
||||||
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
@@ -15,10 +15,10 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>BNDL</string>
|
<string>BNDL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.0</string>
|
<string>1.0.1</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>39</string>
|
<string>41</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
"commonmark-react-renderer": "hmhealey/commonmark-react-renderer#11bf3a089900eda6f3e951f8b8c80663cff4d6a3",
|
"commonmark-react-renderer": "hmhealey/commonmark-react-renderer#11bf3a089900eda6f3e951f8b8c80663cff4d6a3",
|
||||||
"deep-equal": "1.0.1",
|
"deep-equal": "1.0.1",
|
||||||
"intl": "1.2.5",
|
"intl": "1.2.5",
|
||||||
"mattermost-redux": "mattermost/mattermost-redux#master",
|
"mattermost-redux": "mattermost/mattermost-redux#rn-release-1.0.1",
|
||||||
"prop-types": "15.5.10",
|
"prop-types": "15.5.10",
|
||||||
"react": "16.0.0-alpha.6",
|
"react": "16.0.0-alpha.6",
|
||||||
"react-intl": "2.3.0",
|
"react-intl": "2.3.0",
|
||||||
|
|||||||
@@ -3643,9 +3643,9 @@ makeerror@1.0.x:
|
|||||||
dependencies:
|
dependencies:
|
||||||
tmpl "1.0.x"
|
tmpl "1.0.x"
|
||||||
|
|
||||||
mattermost-redux@mattermost/mattermost-redux#master:
|
mattermost-redux@mattermost/mattermost-redux#rn-release-1.0.1:
|
||||||
version "0.0.1"
|
version "0.0.1"
|
||||||
resolved "https://codeload.github.com/mattermost/mattermost-redux/tar.gz/26b897a943a2095bdc793f28c10415441859ad6f"
|
resolved "https://codeload.github.com/mattermost/mattermost-redux/tar.gz/af1095f4b6bbeec4004daa2fe879472de90d85e0"
|
||||||
dependencies:
|
dependencies:
|
||||||
deep-equal "1.0.1"
|
deep-equal "1.0.1"
|
||||||
harmony-reflect "1.5.1"
|
harmony-reflect "1.5.1"
|
||||||
|
|||||||
Reference in New Issue
Block a user