Compare commits

...

9 Commits
v1 ... v1.0.1

Author SHA1 Message Date
Elias Nahum
b4f474a74e Include build folders in make clean 2017-07-19 20:20:27 -04:00
Elias Nahum
50ce8b6974 Update fastlane 2017-07-19 18:40:07 -04:00
Elias Nahum
910b67d47a Version bump to 41 2017-07-19 18:39:51 -04:00
Elias Nahum
85b7f3703f Make release 1.0.1 to use com.mattermost.rnbeta 2017-07-19 17:13:35 -04:00
enahum
da3a0a22b2 Fix SSO login (#754)
* Fix SSO login

* Update style

* Fix stripTrailingSlashes
2017-07-19 15:33:41 -04:00
enahum
408d184dea RN-261 Fix app crashing when badge is unmounted before it displays (#743) 2017-07-18 13:26:10 -04:00
enahum
03488f6010 fix for huawei not rendering posts (#751) 2017-07-17 16:02:40 -04:00
Elias Nahum
b0ff189147 Set build number 2017-07-17 16:00:14 -04:00
Elias Nahum
0bd69fcd6b Prepare for dot release 1.0.1 2017-07-17 12:45:58 -04:00
24 changed files with 401 additions and 188 deletions

View File

@@ -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

View File

@@ -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(

View File

@@ -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"

View File

@@ -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"

View File

@@ -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">

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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>

View File

@@ -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

View File

@@ -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'
} }

View File

@@ -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}]
}
})
}); });

View File

@@ -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 = {

View File

@@ -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);

View File

@@ -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 = '') {

View File

@@ -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(

View File

@@ -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)

View File

@@ -1 +1 @@
Mattermost 2017 - Beta Mattermost Beta

View File

@@ -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 = "";

View File

@@ -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>

View File

@@ -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>

View File

@@ -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",

View File

@@ -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"