forked from Ivasoft/mattermost-mobile
Compare commits
26 Commits
release-1.
...
release-1.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7baf943038 | ||
|
|
8392bcb4f8 | ||
|
|
11136e7cf6 | ||
|
|
cd70d9067a | ||
|
|
d834c3042e | ||
|
|
14b1227c16 | ||
|
|
5b0b1e9af8 | ||
|
|
41b571f137 | ||
|
|
ee38dd39ea | ||
|
|
5e7f368583 | ||
|
|
c7586aa4d8 | ||
|
|
094621b99b | ||
|
|
c5d5e25426 | ||
|
|
901dae29e3 | ||
|
|
8f9de69b4d | ||
|
|
10faa0f37d | ||
|
|
3c40a6db30 | ||
|
|
7db68a5292 | ||
|
|
cb1773bda5 | ||
|
|
a10a21f152 | ||
|
|
bb655c8c60 | ||
|
|
c2de372504 | ||
|
|
23509cbb83 | ||
|
|
c74cd14713 | ||
|
|
1d299d02f0 | ||
|
|
0e1d0d78ae |
@@ -286,14 +286,6 @@ jobs:
|
|||||||
name: Post results to Mattermost
|
name: Post results to Mattermost
|
||||||
command: go run ../security-automation-config/dependency-check/post_results.go
|
command: go run ../security-automation-config/dependency-check/post_results.go
|
||||||
|
|
||||||
build-android-beta:
|
|
||||||
executor: android
|
|
||||||
steps:
|
|
||||||
- build-android
|
|
||||||
- persist
|
|
||||||
- save:
|
|
||||||
filename: "*.apk"
|
|
||||||
|
|
||||||
build-android-release:
|
build-android-release:
|
||||||
executor: android
|
executor: android
|
||||||
steps:
|
steps:
|
||||||
@@ -333,14 +325,6 @@ jobs:
|
|||||||
- save:
|
- save:
|
||||||
filename: "*.apk"
|
filename: "*.apk"
|
||||||
|
|
||||||
build-ios-beta:
|
|
||||||
executor: ios
|
|
||||||
steps:
|
|
||||||
- build-ios
|
|
||||||
- persist
|
|
||||||
- save:
|
|
||||||
filename: "*.ipa"
|
|
||||||
|
|
||||||
build-ios-release:
|
build-ios-release:
|
||||||
executor: ios
|
executor: ios
|
||||||
steps:
|
steps:
|
||||||
@@ -416,16 +400,6 @@ jobs:
|
|||||||
target: android
|
target: android
|
||||||
file: "*.apk"
|
file: "*.apk"
|
||||||
|
|
||||||
deploy-android-beta:
|
|
||||||
executor:
|
|
||||||
name: android
|
|
||||||
resource_class: medium
|
|
||||||
steps:
|
|
||||||
- deploy-to-store:
|
|
||||||
task: "Deploy to Google Play"
|
|
||||||
target: android
|
|
||||||
file: "*.apk"
|
|
||||||
|
|
||||||
deploy-ios-release:
|
deploy-ios-release:
|
||||||
executor: ios
|
executor: ios
|
||||||
steps:
|
steps:
|
||||||
@@ -434,14 +408,6 @@ jobs:
|
|||||||
target: ios
|
target: ios
|
||||||
file: "*.ipa"
|
file: "*.ipa"
|
||||||
|
|
||||||
deploy-ios-beta:
|
|
||||||
executor: ios
|
|
||||||
steps:
|
|
||||||
- deploy-to-store:
|
|
||||||
task: "Deploy to TestFlight"
|
|
||||||
target: ios
|
|
||||||
file: "*.ipa"
|
|
||||||
|
|
||||||
github-release:
|
github-release:
|
||||||
executor:
|
executor:
|
||||||
name: android
|
name: android
|
||||||
@@ -485,27 +451,6 @@ workflows:
|
|||||||
- /^build-android-\d+$/
|
- /^build-android-\d+$/
|
||||||
- /^build-android-release-\d+$/
|
- /^build-android-release-\d+$/
|
||||||
|
|
||||||
- build-android-beta:
|
|
||||||
context: mattermost-mobile-android-beta
|
|
||||||
requires:
|
|
||||||
- test
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- /^build-\d+$/
|
|
||||||
- /^build-android-\d+$/
|
|
||||||
- /^build-android-beta-\d+$/
|
|
||||||
- deploy-android-beta:
|
|
||||||
context: mattermost-mobile-android-beta
|
|
||||||
requires:
|
|
||||||
- build-android-beta
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- /^build-\d+$/
|
|
||||||
- /^build-android-\d+$/
|
|
||||||
- /^build-android-beta-\d+$/
|
|
||||||
|
|
||||||
- build-ios-release:
|
- build-ios-release:
|
||||||
context: mattermost-mobile-ios-release
|
context: mattermost-mobile-ios-release
|
||||||
requires:
|
requires:
|
||||||
@@ -527,27 +472,6 @@ workflows:
|
|||||||
- /^build-ios-\d+$/
|
- /^build-ios-\d+$/
|
||||||
- /^build-ios-release-\d+$/
|
- /^build-ios-release-\d+$/
|
||||||
|
|
||||||
- build-ios-beta:
|
|
||||||
context: mattermost-mobile-ios-beta
|
|
||||||
requires:
|
|
||||||
- test
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- /^build-\d+$/
|
|
||||||
- /^build-ios-\d+$/
|
|
||||||
- /^build-ios-beta-\d+$/
|
|
||||||
- deploy-ios-beta:
|
|
||||||
context: mattermost-mobile-ios-beta
|
|
||||||
requires:
|
|
||||||
- build-ios-beta
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- /^build-\d+$/
|
|
||||||
- /^build-ios-\d+$/
|
|
||||||
- /^build-ios-beta-\d+$/
|
|
||||||
|
|
||||||
- build-android-pr:
|
- build-android-pr:
|
||||||
context: mattermost-mobile-android-pr
|
context: mattermost-mobile-android-pr
|
||||||
requires:
|
requires:
|
||||||
@@ -590,7 +514,6 @@ workflows:
|
|||||||
only:
|
only:
|
||||||
- /^build-\d+$/
|
- /^build-\d+$/
|
||||||
- /^build-ios-\d+$/
|
- /^build-ios-\d+$/
|
||||||
- /^build-ios-beta-\d+$/
|
|
||||||
- /^build-ios-sim-\d+$/
|
- /^build-ios-sim-\d+$/
|
||||||
|
|
||||||
- github-release:
|
- github-release:
|
||||||
|
|||||||
9
.gitignore
vendored
9
.gitignore
vendored
@@ -14,7 +14,7 @@ env.d.ts
|
|||||||
|
|
||||||
# Xcode
|
# Xcode
|
||||||
#
|
#
|
||||||
build/
|
ios/build/*
|
||||||
*.pbxuser
|
*.pbxuser
|
||||||
!default.pbxuser
|
!default.pbxuser
|
||||||
*.mode1v3
|
*.mode1v3
|
||||||
@@ -43,6 +43,8 @@ ios/Pods
|
|||||||
local.properties
|
local.properties
|
||||||
*.iml
|
*.iml
|
||||||
android/app/bin
|
android/app/bin
|
||||||
|
android/app/build
|
||||||
|
android/build
|
||||||
.settings
|
.settings
|
||||||
.project
|
.project
|
||||||
.classpath
|
.classpath
|
||||||
@@ -103,3 +105,8 @@ detox/detox_pixel_4_xl_api_30
|
|||||||
|
|
||||||
#editor-settings
|
#editor-settings
|
||||||
.vscode
|
.vscode
|
||||||
|
.scannerwork
|
||||||
|
|
||||||
|
# Notice.txt generation
|
||||||
|
!build/notice-file
|
||||||
|
|
||||||
|
|||||||
555
NOTICE.txt
555
NOTICE.txt
File diff suppressed because it is too large
Load Diff
@@ -131,8 +131,8 @@ android {
|
|||||||
applicationId "com.mattermost.rnbeta"
|
applicationId "com.mattermost.rnbeta"
|
||||||
minSdkVersion rootProject.ext.minSdkVersion
|
minSdkVersion rootProject.ext.minSdkVersion
|
||||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||||
versionCode 404
|
versionCode 410
|
||||||
versionName "1.53.0"
|
versionName "1.54.0"
|
||||||
multiDexEnabled = true
|
multiDexEnabled = true
|
||||||
testBuildType System.getProperty('testBuildType', 'debug')
|
testBuildType System.getProperty('testBuildType', 'debug')
|
||||||
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
|
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ export default class RemoveMarkdown extends React.PureComponent {
|
|||||||
channelLink: Renderer.forwardChildren,
|
channelLink: Renderer.forwardChildren,
|
||||||
emoji: this.renderNull,
|
emoji: this.renderNull,
|
||||||
hashtag: Renderer.forwardChildren,
|
hashtag: Renderer.forwardChildren,
|
||||||
|
latexinline: Renderer.forwardChildren,
|
||||||
|
|
||||||
paragraph: Renderer.forwardChildren,
|
paragraph: Renderer.forwardChildren,
|
||||||
heading: Renderer.forwardChildren,
|
heading: Renderer.forwardChildren,
|
||||||
|
|||||||
@@ -59,6 +59,13 @@ const ClientCalls = (superclass: any) => class extends superclass {
|
|||||||
{method: 'post'},
|
{method: 'post'},
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
genTURNCredentials = async () => {
|
||||||
|
return this.doFetch(
|
||||||
|
`${this.getCallsRoute()}/turn-credentials`,
|
||||||
|
{method: 'get'},
|
||||||
|
);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export default ClientCalls;
|
export default ClientCalls;
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import {
|
|||||||
|
|
||||||
import {Client4} from '@client/rest';
|
import {Client4} from '@client/rest';
|
||||||
import {WebsocketEvents} from '@constants';
|
import {WebsocketEvents} from '@constants';
|
||||||
|
import {ICEServersConfigs} from '@mmproducts/calls/store/types/calls';
|
||||||
|
|
||||||
import Peer from './simple-peer';
|
import Peer from './simple-peer';
|
||||||
import WebSocketClient from './websocket';
|
import WebSocketClient from './websocket';
|
||||||
@@ -22,7 +23,7 @@ export let client: any = null;
|
|||||||
|
|
||||||
const websocketConnectTimeout = 3000;
|
const websocketConnectTimeout = 3000;
|
||||||
|
|
||||||
export async function newClient(channelID: string, iceServers: string[], closeCb: () => void, setScreenShareURL: (url: string) => void) {
|
export async function newClient(channelID: string, iceServers: ICEServersConfigs, closeCb: () => void, setScreenShareURL: (url: string) => void) {
|
||||||
let peer: Peer | null = null;
|
let peer: Peer | null = null;
|
||||||
let stream: MediaStream;
|
let stream: MediaStream;
|
||||||
let voiceTrackAdded = false;
|
let voiceTrackAdded = false;
|
||||||
@@ -43,7 +44,7 @@ export async function newClient(channelID: string, iceServers: string[], closeCb
|
|||||||
console.log('Unable to get media device:', err); // eslint-disable-line no-console
|
console.log('Unable to get media device:', err); // eslint-disable-line no-console
|
||||||
}
|
}
|
||||||
|
|
||||||
const ws = new WebSocketClient(Client4.getWebSocketUrl());
|
const ws = new WebSocketClient(Client4.getWebSocketUrl(), Client4.getToken());
|
||||||
|
|
||||||
const disconnect = () => {
|
const disconnect = () => {
|
||||||
if (!isClosed) {
|
if (!isClosed) {
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ import {
|
|||||||
} from 'react-native-webrtc';
|
} from 'react-native-webrtc';
|
||||||
import stream from 'readable-stream';
|
import stream from 'readable-stream';
|
||||||
|
|
||||||
|
import {ICEServersConfigs} from '@mmproducts/calls/store/types/calls';
|
||||||
|
|
||||||
const queueMicrotask = (callback: any) => {
|
const queueMicrotask = (callback: any) => {
|
||||||
Promise.resolve().then(callback).catch((e) => setTimeout(() => {
|
Promise.resolve().then(callback).catch((e) => setTimeout(() => {
|
||||||
throw e;
|
throw e;
|
||||||
@@ -94,7 +96,7 @@ export default class Peer extends stream.Duplex {
|
|||||||
private pc: RTCPeerConnection|null = null;
|
private pc: RTCPeerConnection|null = null;
|
||||||
private onFinishBound?: () => void;
|
private onFinishBound?: () => void;
|
||||||
|
|
||||||
constructor(localStream: MediaStream | null, iceServers?: string[]) {
|
constructor(localStream: MediaStream | null, iceServers: ICEServersConfigs) {
|
||||||
super({allowHalfOpen: false});
|
super({allowHalfOpen: false});
|
||||||
|
|
||||||
this.streams = localStream ? [localStream] : [];
|
this.streams = localStream ? [localStream] : [];
|
||||||
@@ -104,21 +106,10 @@ export default class Peer extends stream.Duplex {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const connConfig = {
|
const connConfig = {
|
||||||
iceServers: [
|
iceServers,
|
||||||
{
|
|
||||||
urls: [
|
|
||||||
'stun:stun.l.google.com:19302',
|
|
||||||
'stun:global.stun.twilio.com:3478',
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
sdpSemantics: 'unified-plan',
|
sdpSemantics: 'unified-plan',
|
||||||
};
|
};
|
||||||
|
|
||||||
if (iceServers && iceServers.length > 0) {
|
|
||||||
connConfig.iceServers[0].urls = iceServers;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
this.pc = new RTCPeerConnection(connConfig);
|
this.pc = new RTCPeerConnection(connConfig);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|||||||
@@ -34,7 +34,10 @@ jest.mock('@client/rest', () => ({
|
|||||||
},
|
},
|
||||||
]),
|
]),
|
||||||
getCallsConfig: jest.fn(() => ({
|
getCallsConfig: jest.fn(() => ({
|
||||||
ICEServers: ['mattermost.com'],
|
ICEServersConfigs: [{
|
||||||
|
urls: 'stun:stun1.example.com',
|
||||||
|
},
|
||||||
|
],
|
||||||
AllowEnableCalls: true,
|
AllowEnableCalls: true,
|
||||||
DefaultEnabled: true,
|
DefaultEnabled: true,
|
||||||
last_retrieved_at: 1234,
|
last_retrieved_at: 1234,
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import CallsTypes from '@mmproducts/calls/store/action_types/calls';
|
|||||||
import {
|
import {
|
||||||
getCallInCurrentChannel,
|
getCallInCurrentChannel,
|
||||||
getConfig,
|
getConfig,
|
||||||
|
getICEServersConfigs,
|
||||||
getNumCurrentConnectedParticipants,
|
getNumCurrentConnectedParticipants,
|
||||||
} from '@mmproducts/calls/store/selectors/calls';
|
} from '@mmproducts/calls/store/selectors/calls';
|
||||||
import {Call, CallParticipant, DefaultServerConfig} from '@mmproducts/calls/store/types/calls';
|
import {Call, CallParticipant, DefaultServerConfig} from '@mmproducts/calls/store/types/calls';
|
||||||
@@ -201,7 +202,13 @@ export function joinCall(channelId: string, intl: typeof intlShape): ActionFunc
|
|||||||
dispatch(setSpeakerphoneOn(false));
|
dispatch(setSpeakerphoneOn(false));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ws = await newClient(channelId, getConfig(getState()).ICEServers, () => {
|
const state = getState();
|
||||||
|
const iceConfigs = [...getICEServersConfigs(state)];
|
||||||
|
if (getConfig(state).NeedsTURNCredentials) {
|
||||||
|
iceConfigs.push(...await Client4.genTURNCredentials());
|
||||||
|
}
|
||||||
|
|
||||||
|
ws = await newClient(channelId, iceConfigs, () => {
|
||||||
dispatch(setSpeakerphoneOn(false));
|
dispatch(setSpeakerphoneOn(false));
|
||||||
dispatch({type: CallsTypes.RECEIVED_MYSELF_LEFT_CALL});
|
dispatch({type: CallsTypes.RECEIVED_MYSELF_LEFT_CALL});
|
||||||
}, setScreenShareURL);
|
}, setScreenShareURL);
|
||||||
|
|||||||
@@ -408,7 +408,7 @@ describe('Reducers.calls.config', () => {
|
|||||||
const testAction = {
|
const testAction = {
|
||||||
type: CallsTypes.RECEIVED_CONFIG,
|
type: CallsTypes.RECEIVED_CONFIG,
|
||||||
data: {
|
data: {
|
||||||
ICEServers: ['google.com'],
|
ICEServers: ['stun:stun.example.com'],
|
||||||
AllowEnableCalls: true,
|
AllowEnableCalls: true,
|
||||||
DefaultEnabled: true,
|
DefaultEnabled: true,
|
||||||
last_retrieved_at: 123,
|
last_retrieved_at: 123,
|
||||||
|
|||||||
@@ -197,4 +197,47 @@ describe('Selectors.Calls', () => {
|
|||||||
// On cloud, MaxCallParticipants missing, default should be used.
|
// On cloud, MaxCallParticipants missing, default should be used.
|
||||||
assert.equal(Selectors.isLimitRestricted(newState, 'call1'), true);
|
assert.equal(Selectors.isLimitRestricted(newState, 'call1'), true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('getICEServersConfigs', () => {
|
||||||
|
assert.deepEqual(Selectors.getICEServersConfigs(testState), []);
|
||||||
|
|
||||||
|
// backwards compatible case, no ICEServersConfigs present.
|
||||||
|
let newState = {
|
||||||
|
...testState,
|
||||||
|
entities: {
|
||||||
|
...testState.entities,
|
||||||
|
calls: {
|
||||||
|
...testState.entities.calls,
|
||||||
|
config: {
|
||||||
|
...testState.entities.calls.config,
|
||||||
|
ICEServers: ['stun:stun1.example.com'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
assert.deepEqual(Selectors.getICEServersConfigs(newState), [{urls: ['stun:stun1.example.com']}]);
|
||||||
|
|
||||||
|
// ICEServersConfigs defined case
|
||||||
|
newState = {
|
||||||
|
...testState,
|
||||||
|
entities: {
|
||||||
|
...testState.entities,
|
||||||
|
calls: {
|
||||||
|
...testState.entities.calls,
|
||||||
|
config: {
|
||||||
|
...testState.entities.calls.config,
|
||||||
|
ICEServers: ['stun:stun1.example.com'],
|
||||||
|
ICEServersConfigs: [
|
||||||
|
{urls: 'stun:stun1.example.com'},
|
||||||
|
{urls: 'turn:turn.example.com', username: 'username', credentail: 'password'},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
assert.deepEqual(Selectors.getICEServersConfigs(newState), [
|
||||||
|
{urls: 'stun:stun1.example.com'},
|
||||||
|
{urls: 'turn:turn.example.com', username: 'username', credentail: 'password'},
|
||||||
|
]);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import {getCurrentChannelId} from '@mm-redux/selectors/entities/common';
|
|||||||
import {getLicense, getServerVersion} from '@mm-redux/selectors/entities/general';
|
import {getLicense, getServerVersion} from '@mm-redux/selectors/entities/general';
|
||||||
import {GlobalState} from '@mm-redux/types/store';
|
import {GlobalState} from '@mm-redux/types/store';
|
||||||
import {isMinimumServerVersion} from '@mm-redux/utils/helpers';
|
import {isMinimumServerVersion} from '@mm-redux/utils/helpers';
|
||||||
import {Call} from '@mmproducts/calls/store/types/calls';
|
import {Call, ICEServersConfigs} from '@mmproducts/calls/store/types/calls';
|
||||||
|
|
||||||
export function getConfig(state: GlobalState) {
|
export function getConfig(state: GlobalState) {
|
||||||
return state.entities.calls.config;
|
return state.entities.calls.config;
|
||||||
@@ -114,3 +114,25 @@ export const isLimitRestricted: (state: GlobalState, channelId?: string) => bool
|
|||||||
return max !== 0 && numParticipants >= max;
|
return max !== 0 && numParticipants >= max;
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
export const getICEServersConfigs: (state: GlobalState) => ICEServersConfigs = createSelector(
|
||||||
|
getConfig,
|
||||||
|
(config) => {
|
||||||
|
// if ICEServersConfigs is set, we can trust this to be complete and
|
||||||
|
// coming from an updated API.
|
||||||
|
if (config.ICEServersConfigs?.length > 0) {
|
||||||
|
return config.ICEServersConfigs;
|
||||||
|
}
|
||||||
|
|
||||||
|
// otherwise we revert to using the now deprecated field.
|
||||||
|
if (config.ICEServers?.length > 0) {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
urls: config.ICEServers,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return [];
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||||
// See LICENSE.txt for license information.
|
// See LICENSE.txt for license information.
|
||||||
|
|
||||||
|
import {ConfigurationParamWithUrls, ConfigurationParamWithUrl} from 'react-native-webrtc';
|
||||||
|
|
||||||
import {UserProfile} from '@mm-redux/types/users';
|
import {UserProfile} from '@mm-redux/types/users';
|
||||||
import {Dictionary} from '@mm-redux/types/utilities';
|
import {Dictionary} from '@mm-redux/types/utilities';
|
||||||
|
|
||||||
@@ -60,18 +62,24 @@ export type VoiceEventData = {
|
|||||||
|
|
||||||
export type ServerConfig = {
|
export type ServerConfig = {
|
||||||
ICEServers: string[];
|
ICEServers: string[];
|
||||||
|
ICEServersConfigs: ICEServersConfigs;
|
||||||
AllowEnableCalls: boolean;
|
AllowEnableCalls: boolean;
|
||||||
DefaultEnabled: boolean;
|
DefaultEnabled: boolean;
|
||||||
MaxCallParticipants: number;
|
MaxCallParticipants: number;
|
||||||
|
NeedsTURNCredentials: boolean;
|
||||||
sku_short_name: string;
|
sku_short_name: string;
|
||||||
last_retrieved_at: number;
|
last_retrieved_at: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const DefaultServerConfig = {
|
export const DefaultServerConfig = {
|
||||||
ICEServers: [],
|
ICEServers: [],
|
||||||
|
ICEServersConfigs: [],
|
||||||
AllowEnableCalls: false,
|
AllowEnableCalls: false,
|
||||||
DefaultEnabled: false,
|
DefaultEnabled: false,
|
||||||
MaxCallParticipants: 0,
|
MaxCallParticipants: 0,
|
||||||
|
NeedsTURNCredentials: false,
|
||||||
sku_short_name: '',
|
sku_short_name: '',
|
||||||
last_retrieved_at: 0,
|
last_retrieved_at: 0,
|
||||||
} as ServerConfig;
|
} as ServerConfig;
|
||||||
|
|
||||||
|
export type ICEServersConfigs = Array<ConfigurationParamWithUrls | ConfigurationParamWithUrl>;
|
||||||
|
|||||||
@@ -7,13 +7,14 @@ import {encode} from '@msgpack/msgpack/dist';
|
|||||||
|
|
||||||
export default class WebSocketClient extends EventEmitter {
|
export default class WebSocketClient extends EventEmitter {
|
||||||
private ws: WebSocket | null;
|
private ws: WebSocket | null;
|
||||||
private seqNo = 0;
|
private seqNo = 1;
|
||||||
private connID = '';
|
private connID = '';
|
||||||
private eventPrefix = `custom_${Calls.PluginId}`;
|
private eventPrefix = `custom_${Calls.PluginId}`;
|
||||||
|
|
||||||
constructor(connURL: string) {
|
constructor(connURL: string, authToken: string) {
|
||||||
super();
|
super();
|
||||||
this.ws = new WebSocket(connURL);
|
|
||||||
|
this.ws = new WebSocket(connURL, [], {headers: {authorization: `Bearer ${authToken}`}});
|
||||||
|
|
||||||
this.ws.onerror = (err) => {
|
this.ws.onerror = (err) => {
|
||||||
this.emit('error', err);
|
this.emit('error', err);
|
||||||
@@ -73,6 +74,7 @@ export default class WebSocketClient extends EventEmitter {
|
|||||||
seq: this.seqNo++,
|
seq: this.seqNo++,
|
||||||
data,
|
data,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (this.ws && this.ws.readyState === WebSocket.OPEN) {
|
if (this.ws && this.ws.readyState === WebSocket.OPEN) {
|
||||||
if (binary) {
|
if (binary) {
|
||||||
this.ws.send(encode(msg));
|
this.ws.send(encode(msg));
|
||||||
@@ -87,7 +89,7 @@ export default class WebSocketClient extends EventEmitter {
|
|||||||
this.ws.close();
|
this.ws.close();
|
||||||
this.ws = null;
|
this.ws = null;
|
||||||
}
|
}
|
||||||
this.seqNo = 0;
|
this.seqNo = 1;
|
||||||
this.connID = '';
|
this.connID = '';
|
||||||
this.emit('close');
|
this.emit('close');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,35 +11,54 @@
|
|||||||
"about.teamEditiont1": "Enterprise Edition",
|
"about.teamEditiont1": "Enterprise Edition",
|
||||||
"about.title": "Sobre {appTitle}",
|
"about.title": "Sobre {appTitle}",
|
||||||
"announcment_banner.dont_show_again": "Não mostrar novamente",
|
"announcment_banner.dont_show_again": "Não mostrar novamente",
|
||||||
|
"api.channel.add_guest.added": "{addedUsername} adicionado ao canal como convidado por {username}.",
|
||||||
"api.channel.add_member.added": "{addedUsername} foi adicionado ao canal por {username}.",
|
"api.channel.add_member.added": "{addedUsername} foi adicionado ao canal por {username}.",
|
||||||
|
"api.channel.guest_join_channel.post_and_forget": "{username} entrou no canal como convidado.",
|
||||||
"apps.error": "Erro: {error}",
|
"apps.error": "Erro: {error}",
|
||||||
"apps.error.command.field_missing": "Campos obrigatórios ausentes: `{fieldName}`.",
|
"apps.error.command.field_missing": "Campos obrigatórios ausentes: `{fieldName}`.",
|
||||||
|
"apps.error.command.same_channel": "Canal repetido para o campo `{fieldName}`: `{option}`.",
|
||||||
|
"apps.error.command.same_option": "Opção repetida para o campo `{fieldName}`: `{option}`.",
|
||||||
|
"apps.error.command.same_user": "Usuário repetido para o campo `{fieldName}`: `{option}`.",
|
||||||
"apps.error.command.unknown_channel": "Canal desconhecido para o campo `{fieldName}`: `{option}`.",
|
"apps.error.command.unknown_channel": "Canal desconhecido para o campo `{fieldName}`: `{option}`.",
|
||||||
"apps.error.command.unknown_option": "Opção desconhecida para o campo `{fieldName}`: `{option}`.",
|
"apps.error.command.unknown_option": "Opção desconhecida para o campo `{fieldName}`: `{option}`.",
|
||||||
"apps.error.command.unknown_user": "Usuário desconhecido para o campo `{fieldName}`: `{opção}`.",
|
"apps.error.command.unknown_user": "Usuário desconhecido para o campo `{fieldName}`: `{opção}`.",
|
||||||
"apps.error.form.no_form": "`form` não está definido.",
|
"apps.error.form.no_form": "`form` não está definido.",
|
||||||
|
"apps.error.form.no_lookup": "`procurar` não está definido.",
|
||||||
|
"apps.error.form.no_source": "`fonte` não está definida.",
|
||||||
|
"apps.error.form.no_submit": "`enviar ` não está definido",
|
||||||
"apps.error.form.refresh": "Ocorreu um erro ao buscar os campos selecionados. Entre em contato com o desenvolvedor do aplicativo. Detalhes: {details}",
|
"apps.error.form.refresh": "Ocorreu um erro ao buscar os campos selecionados. Entre em contato com o desenvolvedor do aplicativo. Detalhes: {details}",
|
||||||
"apps.error.form.refresh_no_refresh": "Atualização chamada no campo sem atualização.",
|
"apps.error.form.refresh_no_refresh": "Atualização chamada no campo sem atualização.",
|
||||||
"apps.error.form.submit.pretext": "Ocorreu um erro ao enviar o modal. Entre em contato com o desenvolvedor do aplicativo. Detalhes: {details}",
|
"apps.error.form.submit.pretext": "Ocorreu um erro ao enviar o modal. Entre em contato com o desenvolvedor do aplicativo. Detalhes: {details}",
|
||||||
"apps.error.lookup.error_preparing_request": "Erro ao preparar solicitação de pesquisa: {errorMessage}",
|
"apps.error.lookup.error_preparing_request": "Erro ao preparar solicitação de pesquisa: {errorMessage}",
|
||||||
|
"apps.error.malformed_binding": "Esta ligação não está formada corretamente. Entre em contato com o desenvolvedor do aplicativo.",
|
||||||
"apps.error.parser": "Erro de análise: {error}",
|
"apps.error.parser": "Erro de análise: {error}",
|
||||||
"apps.error.parser.empty_value": "valores vazios não são permitidos",
|
"apps.error.parser.empty_value": "valores vazios não são permitidos",
|
||||||
|
"apps.error.parser.execute_non_leaf": "Você deve selecionar um subcomando.",
|
||||||
|
"apps.error.parser.missing_binding": "Ligações de comando ausentes.",
|
||||||
"apps.error.parser.missing_field_value": "Falta o valor do campo.",
|
"apps.error.parser.missing_field_value": "Falta o valor do campo.",
|
||||||
|
"apps.error.parser.missing_list_end": "Token de fechamento de lista esperado.",
|
||||||
"apps.error.parser.missing_quote": "Aspas duplas correspondentes são esperadas antes do final da entrada.",
|
"apps.error.parser.missing_quote": "Aspas duplas correspondentes são esperadas antes do final da entrada.",
|
||||||
|
"apps.error.parser.missing_source": "O formulário não tem envio nem fonte.",
|
||||||
|
"apps.error.parser.missing_submit": "Nenhuma chamada de envio em forma ou vinculação.",
|
||||||
"apps.error.parser.missing_tick": "Crase correspondente é esperada antes do final de entrada.",
|
"apps.error.parser.missing_tick": "Crase correspondente é esperada antes do final de entrada.",
|
||||||
"apps.error.parser.multiple_equal": "Vários sinais `=` não são permitidos.",
|
"apps.error.parser.multiple_equal": "Vários sinais `=` não são permitidos.",
|
||||||
"apps.error.parser.no_argument_pos_x": "Incapaz de identificar o argumento.",
|
"apps.error.parser.no_argument_pos_x": "Incapaz de identificar o argumento.",
|
||||||
"apps.error.parser.no_bindings": "Sem ligações de comando.",
|
"apps.error.parser.no_bindings": "Sem ligações de comando.",
|
||||||
|
"apps.error.parser.no_form": "Nenhum formulário encontrado.",
|
||||||
"apps.error.parser.no_match": "`{command}`: Nenhum comando correspondente encontrado neste espaço de trabalho.",
|
"apps.error.parser.no_match": "`{command}`: Nenhum comando correspondente encontrado neste espaço de trabalho.",
|
||||||
"apps.error.parser.no_slash_start": "O comando deve começar com `/`.",
|
"apps.error.parser.no_slash_start": "O comando deve começar com `/`.",
|
||||||
|
"apps.error.parser.unexpected_character": "Caracter inesperado.",
|
||||||
|
"apps.error.parser.unexpected_comma": "Vírgula inesperada.",
|
||||||
"apps.error.parser.unexpected_error": "Erro inesperado.",
|
"apps.error.parser.unexpected_error": "Erro inesperado.",
|
||||||
"apps.error.parser.unexpected_flag": "O comando não aceita o sinalizador `{flagName}`.",
|
"apps.error.parser.unexpected_flag": "O comando não aceita o sinalizador `{flagName}`.",
|
||||||
|
"apps.error.parser.unexpected_squared_bracket": "Abertura de lista inesperada.",
|
||||||
"apps.error.parser.unexpected_state": "Inacessível: Estado inesperado em matchBinding: `{state}`.",
|
"apps.error.parser.unexpected_state": "Inacessível: Estado inesperado em matchBinding: `{state}`.",
|
||||||
"apps.error.parser.unexpected_whitespace": "Inacessível: espaço em branco inesperado.",
|
"apps.error.parser.unexpected_whitespace": "Inacessível: espaço em branco inesperado.",
|
||||||
"apps.error.responses.form.no_form": "O tipo de resposta é `form`, mas nenhum formulário foi incluído na resposta.",
|
"apps.error.responses.form.no_form": "O tipo de resposta é `form`, mas nenhum formulário foi incluído na resposta.",
|
||||||
"apps.error.responses.navigate.no_url": "O tipo de resposta é `navigate`, mas nenhuma url foi incluído na resposta.",
|
"apps.error.responses.navigate.no_url": "O tipo de resposta é `navigate`, mas nenhuma url foi incluído na resposta.",
|
||||||
"apps.error.responses.unexpected_error": "Recebeu um erro inesperado.",
|
"apps.error.responses.unexpected_error": "Recebeu um erro inesperado.",
|
||||||
"apps.error.responses.unexpected_type": "O tipo de resposta do aplicativo não era esperado. Tipo de resposta: {type}.",
|
"apps.error.responses.unexpected_type": "O tipo de resposta do aplicativo não era esperado. Tipo de resposta: {type}.",
|
||||||
|
"apps.error.responses.unknown_field_error": "Recebeu um erro para um campo desconhecido. Nome do campo: `{field}`. Erro: `{error}`.",
|
||||||
"apps.error.responses.unknown_type": "O tipo de resposta do aplicativo não é compatível. Tipo de resposta: {type}.",
|
"apps.error.responses.unknown_type": "O tipo de resposta do aplicativo não é compatível. Tipo de resposta: {type}.",
|
||||||
"apps.error.unknown": "Ocorreu um erro desconhecido.",
|
"apps.error.unknown": "Ocorreu um erro desconhecido.",
|
||||||
"apps.suggestion.dynamic.error": "Erro de seleção dinâmica",
|
"apps.suggestion.dynamic.error": "Erro de seleção dinâmica",
|
||||||
@@ -48,6 +67,9 @@
|
|||||||
"apps.suggestion.no_static": "Sem opções correspondentes.",
|
"apps.suggestion.no_static": "Sem opções correspondentes.",
|
||||||
"apps.suggestion.no_suggestion": "Sem sugestões correspondentes.",
|
"apps.suggestion.no_suggestion": "Sem sugestões correspondentes.",
|
||||||
"archivedChannelMessage": "Você está vendo um **canal arquivado**. Novas mensagens não podem ser publicadas.",
|
"archivedChannelMessage": "Você está vendo um **canal arquivado**. Novas mensagens não podem ser publicadas.",
|
||||||
|
"camera_type.photo.option": "Capturar foto",
|
||||||
|
"camera_type.title": "Escolha uma ação",
|
||||||
|
"camera_type.video.option": "Record Video",
|
||||||
"center_panel.archived.closeChannel": "Fechar Canal",
|
"center_panel.archived.closeChannel": "Fechar Canal",
|
||||||
"channel.channelHasGuests": "Este canal tem convidados",
|
"channel.channelHasGuests": "Este canal tem convidados",
|
||||||
"channel.hasGuests": "Este grupo de mensagem tem convidados",
|
"channel.hasGuests": "Este grupo de mensagem tem convidados",
|
||||||
@@ -67,6 +89,7 @@
|
|||||||
"channel_loader.someone": "Alguém",
|
"channel_loader.someone": "Alguém",
|
||||||
"channel_members_modal.remove": "Remover",
|
"channel_members_modal.remove": "Remover",
|
||||||
"channel_modal.cancel": "Cancelar",
|
"channel_modal.cancel": "Cancelar",
|
||||||
|
"channel_modal.channelType": "Modelo",
|
||||||
"channel_modal.descriptionHelp": "Descreva como este canal deve ser utilizado.",
|
"channel_modal.descriptionHelp": "Descreva como este canal deve ser utilizado.",
|
||||||
"channel_modal.header": "Cabeçalho",
|
"channel_modal.header": "Cabeçalho",
|
||||||
"channel_modal.headerEx": "Ex.: \"[Título do Link](http://example.com)\"",
|
"channel_modal.headerEx": "Ex.: \"[Título do Link](http://example.com)\"",
|
||||||
@@ -76,6 +99,8 @@
|
|||||||
"channel_modal.optional": "(opcional)",
|
"channel_modal.optional": "(opcional)",
|
||||||
"channel_modal.purpose": "Propósito",
|
"channel_modal.purpose": "Propósito",
|
||||||
"channel_modal.purposeEx": "Ex.: \"Um canal para arquivar bugs e melhorias\"",
|
"channel_modal.purposeEx": "Ex.: \"Um canal para arquivar bugs e melhorias\"",
|
||||||
|
"channel_modal.type.private": "Canal privado",
|
||||||
|
"channel_modal.type.public": "Canal público",
|
||||||
"channel_notifications.ignoreChannelMentions.settings": "Ignorar @channel, @here, @all",
|
"channel_notifications.ignoreChannelMentions.settings": "Ignorar @channel, @here, @all",
|
||||||
"channel_notifications.muteChannel.settings": "Silenciar o canal",
|
"channel_notifications.muteChannel.settings": "Silenciar o canal",
|
||||||
"channel_notifications.preference.all_activity": "Para todas as atividades",
|
"channel_notifications.preference.all_activity": "Para todas as atividades",
|
||||||
@@ -120,21 +145,76 @@
|
|||||||
"create_comment.addComment": "Adicionar um comentário...",
|
"create_comment.addComment": "Adicionar um comentário...",
|
||||||
"create_post.deactivated": "Você está vendo um canal arquivado com um usuário inativo.",
|
"create_post.deactivated": "Você está vendo um canal arquivado com um usuário inativo.",
|
||||||
"create_post.write": "Escrever para {channelDisplayName}",
|
"create_post.write": "Escrever para {channelDisplayName}",
|
||||||
|
"custom_status.expiry.at": "no",
|
||||||
|
"custom_status.expiry.until": "Até",
|
||||||
|
"custom_status.expiry_dropdown.custom": "Personalizado",
|
||||||
|
"custom_status.expiry_dropdown.date_and_time": "Data e hora",
|
||||||
|
"custom_status.expiry_dropdown.dont_clear": "Não limpe",
|
||||||
|
"custom_status.expiry_dropdown.four_hours": "4 horas",
|
||||||
|
"custom_status.expiry_dropdown.one_hour": "1 hora",
|
||||||
|
"custom_status.expiry_dropdown.thirty_minutes": "30 minutos",
|
||||||
|
"custom_status.expiry_dropdown.this_week": "Essa semana",
|
||||||
"custom_status.expiry_dropdown.today": "Hoje",
|
"custom_status.expiry_dropdown.today": "Hoje",
|
||||||
"custom_status.expiry_time.today": "Hoje",
|
"custom_status.expiry_time.today": "Hoje",
|
||||||
|
"custom_status.expiry_time.tomorrow": "Amanhã",
|
||||||
|
"custom_status.failure_message": "Falha ao atualizar o status. Tente novamente",
|
||||||
|
"custom_status.set_status": "Definir um status",
|
||||||
|
"custom_status.suggestions.in_a_meeting": "Em uma reunião",
|
||||||
|
"custom_status.suggestions.on_a_vacation": "De férias",
|
||||||
|
"custom_status.suggestions.out_for_lunch": "Almoçando",
|
||||||
|
"custom_status.suggestions.out_sick": "Doente",
|
||||||
|
"custom_status.suggestions.recent_title": "RECENTE",
|
||||||
|
"custom_status.suggestions.title": "SUGESTÕES",
|
||||||
|
"custom_status.suggestions.working_from_home": "Trabalhando em casa",
|
||||||
"date_separator.today": "Hoje",
|
"date_separator.today": "Hoje",
|
||||||
"date_separator.yesterday": "Ontem",
|
"date_separator.yesterday": "Ontem",
|
||||||
"edit_post.editPost": "Editar o post...",
|
"edit_post.editPost": "Editar o post...",
|
||||||
"edit_post.save": "Salvar",
|
"edit_post.save": "Salvar",
|
||||||
|
"emoji_picker.activities": "Atividades",
|
||||||
|
"emoji_picker.animals-nature": "Animais e Natureza",
|
||||||
|
"emoji_picker.custom": "Personalizado",
|
||||||
|
"emoji_picker.flags": "Bandeiras",
|
||||||
|
"emoji_picker.food-drink": "Comida e bebida",
|
||||||
|
"emoji_picker.objects": "Objetos",
|
||||||
|
"emoji_picker.people-body": "Pessoas e Corpo",
|
||||||
|
"emoji_picker.recent": "Recente",
|
||||||
"emoji_picker.searchResults": "Resultados da Pesquisa",
|
"emoji_picker.searchResults": "Resultados da Pesquisa",
|
||||||
|
"emoji_picker.smileys-emotion": "Sorrisos e Emoções",
|
||||||
|
"emoji_picker.symbols": "Símbolos",
|
||||||
|
"emoji_picker.travel-places": "Viagens e lugares",
|
||||||
|
"emoji_skin.dark_skin_tone": "tom de pele escuro",
|
||||||
|
"emoji_skin.default": "tom de pele padrão",
|
||||||
|
"emoji_skin.light_skin_tone": "tom de pele claro",
|
||||||
|
"emoji_skin.medium_dark_skin_tone": "pele morena escura",
|
||||||
|
"emoji_skin.medium_light_skin_tone": "tom de pele claro médio",
|
||||||
|
"emoji_skin.medium_skin_tone": "tom de pele médio",
|
||||||
"file_upload.fileAbove": "Arquivos devem ter menos de {max}",
|
"file_upload.fileAbove": "Arquivos devem ter menos de {max}",
|
||||||
|
"friendly_date.daysAgo": "{count} {count, plural, one {day} other {days}} atrás",
|
||||||
|
"friendly_date.hoursAgo": "{count} {count, plural, one {hour} other {hours}} atrás",
|
||||||
|
"friendly_date.minsAgo": "{count} {count, plural, one {min} other {mins}} atrás",
|
||||||
|
"friendly_date.monthsAgo": "{count} {count, plural, one {month} other {months}} atrás",
|
||||||
|
"friendly_date.now": "Agora",
|
||||||
|
"friendly_date.yearsAgo": "{count} {count, plural, one {year} other {years}} atrás",
|
||||||
"friendly_date.yesterday": "Ontem",
|
"friendly_date.yesterday": "Ontem",
|
||||||
"gallery.download_file": "Baixar arquivo",
|
"gallery.download_file": "Baixar arquivo",
|
||||||
"gallery.footer.channel_name": "Compartilhado em {channelName}",
|
"gallery.footer.channel_name": "Compartilhado em {channelName}",
|
||||||
"gallery.open_file": "Abrir arquivo",
|
"gallery.open_file": "Abrir arquivo",
|
||||||
"gallery.unsuppored": "A visualização não é compatível com este tipo de arquivo",
|
"gallery.unsuppored": "A visualização não é compatível com este tipo de arquivo",
|
||||||
"get_post_link_modal.title": "Copiar Link",
|
"get_post_link_modal.title": "Copiar Link",
|
||||||
|
"global_threads.allThreads": "Todos os seus tópicos",
|
||||||
|
"global_threads.emptyThreads.message": "Todos os tópicos nos quais você é mencionado ou dos quais participou serão exibidos aqui junto com todos os tópicos que você seguiu.",
|
||||||
|
"global_threads.emptyThreads.title": "Nenhum tópico seguido ainda",
|
||||||
|
"global_threads.emptyUnreads.message": "Parece que você está todo preso.",
|
||||||
|
"global_threads.emptyUnreads.title": "Nenhum tópico não lido",
|
||||||
"global_threads.markAllRead.cancel": "Cancelar",
|
"global_threads.markAllRead.cancel": "Cancelar",
|
||||||
|
"global_threads.markAllRead.markRead": "Marcar como lido",
|
||||||
|
"global_threads.markAllRead.message": "Isso limpará qualquer status não lido de todos os seus tópicos mostrados aqui",
|
||||||
|
"global_threads.markAllRead.title": "Tem certeza de que deseja marcar todos os tópicos como lidos?",
|
||||||
|
"global_threads.options.mark_as_read": "Marcar como Lido",
|
||||||
|
"global_threads.options.open_in_channel": "Abrir no canal",
|
||||||
|
"global_threads.options.title": "AÇÕES DE TÓPICO",
|
||||||
|
"global_threads.options.unfollow": "Deixar de seguir o tópico",
|
||||||
|
"global_threads.unreads": "Não lidos",
|
||||||
"integrations.add": "Adicionar",
|
"integrations.add": "Adicionar",
|
||||||
"intro_messages.anyMember": " Qualquer membro pode participar e ler este canal.",
|
"intro_messages.anyMember": " Qualquer membro pode participar e ler este canal.",
|
||||||
"intro_messages.beginning": "Início do {name}",
|
"intro_messages.beginning": "Início do {name}",
|
||||||
@@ -208,7 +288,7 @@
|
|||||||
"mobile.camera_photo_permission_denied_title": "{applicationName} gostaria de acessar sua camera",
|
"mobile.camera_photo_permission_denied_title": "{applicationName} gostaria de acessar sua camera",
|
||||||
"mobile.camera_video_permission_denied_description": "Faça vídeos e envie-os para a sua instância do Mattermost ou salve-os no seu dispositivo. Abra Configurações para conceder ao Mattermost acesso de leitura e gravação à sua câmera.",
|
"mobile.camera_video_permission_denied_description": "Faça vídeos e envie-os para a sua instância do Mattermost ou salve-os no seu dispositivo. Abra Configurações para conceder ao Mattermost acesso de leitura e gravação à sua câmera.",
|
||||||
"mobile.camera_video_permission_denied_title": "{applicationName} gostaria de acessar sua camera",
|
"mobile.camera_video_permission_denied_title": "{applicationName} gostaria de acessar sua camera",
|
||||||
"mobile.channel_drawer.search": "Ir para...",
|
"mobile.channel_drawer.search": "Encontrar canal",
|
||||||
"mobile.channel_info.alertMessageConvertChannel": "Quando você converte {displayName} em um canal privado, o histórico e os membros são preservados. Os arquivos compartilhados publicamente permanecem acessíveis a qualquer pessoa com o link. O ingresso a um canal privado é apenas por convite.\n\nA mudança é permanente e não pode ser desfeita.\n\nTem certeza de que deseja converter {displayName} em um canal privado?",
|
"mobile.channel_info.alertMessageConvertChannel": "Quando você converte {displayName} em um canal privado, o histórico e os membros são preservados. Os arquivos compartilhados publicamente permanecem acessíveis a qualquer pessoa com o link. O ingresso a um canal privado é apenas por convite.\n\nA mudança é permanente e não pode ser desfeita.\n\nTem certeza de que deseja converter {displayName} em um canal privado?",
|
||||||
"mobile.channel_info.alertMessageDeleteChannel": "Você tem certeza que quer arquivar o {term} {name}?",
|
"mobile.channel_info.alertMessageDeleteChannel": "Você tem certeza que quer arquivar o {term} {name}?",
|
||||||
"mobile.channel_info.alertMessageLeaveChannel": "Você tem certeza que quer deixar o {term} {name}?",
|
"mobile.channel_info.alertMessageLeaveChannel": "Você tem certeza que quer deixar o {term} {name}?",
|
||||||
@@ -252,6 +332,9 @@
|
|||||||
"mobile.create_channel.public": "Novo Canal Público",
|
"mobile.create_channel.public": "Novo Canal Público",
|
||||||
"mobile.create_post.read_only": "Este canal é de apenas leitura",
|
"mobile.create_post.read_only": "Este canal é de apenas leitura",
|
||||||
"mobile.custom_list.no_results": "Nenhum Resultado",
|
"mobile.custom_list.no_results": "Nenhum Resultado",
|
||||||
|
"mobile.custom_status.choose_emoji": "Escolha um emoji",
|
||||||
|
"mobile.custom_status.clear_after": "Limpar depois",
|
||||||
|
"mobile.custom_status.modal_confirm": "Feito",
|
||||||
"mobile.display_settings.sidebar": "Barra lateral",
|
"mobile.display_settings.sidebar": "Barra lateral",
|
||||||
"mobile.display_settings.theme": "Tema",
|
"mobile.display_settings.theme": "Tema",
|
||||||
"mobile.document_preview.failed_description": "Um erro aconteceu durante a abertura do documento. Por favor verifique que você tem o visualizador para {fileType} instalado e tente novamente.\n",
|
"mobile.document_preview.failed_description": "Um erro aconteceu durante a abertura do documento. Por favor verifique que você tem o visualizador para {fileType} instalado e tente novamente.\n",
|
||||||
@@ -288,7 +371,7 @@
|
|||||||
"mobile.file_upload.disabled": "Os uploads de arquivos do celular estão desabilitados. Entre em contato com o Administrador do Sistema para obter mais detalhes.",
|
"mobile.file_upload.disabled": "Os uploads de arquivos do celular estão desabilitados. Entre em contato com o Administrador do Sistema para obter mais detalhes.",
|
||||||
"mobile.file_upload.disabled2": "Os envios de arquivos do celular estão desabilitados.",
|
"mobile.file_upload.disabled2": "Os envios de arquivos do celular estão desabilitados.",
|
||||||
"mobile.file_upload.library": "Biblioteca de Fotos",
|
"mobile.file_upload.library": "Biblioteca de Fotos",
|
||||||
"mobile.file_upload.max_warning": "Upload limitado ao máximo de 5 arquivos.",
|
"mobile.file_upload.max_warning": "Uploads limitados a {count} máximo de arquivos.",
|
||||||
"mobile.file_upload.unsupportedMimeType": "Somente imagens em BMP, JPG ou PNG podem ser usadas como imagem do perfil.",
|
"mobile.file_upload.unsupportedMimeType": "Somente imagens em BMP, JPG ou PNG podem ser usadas como imagem do perfil.",
|
||||||
"mobile.file_upload.video": "Galeria de Videos",
|
"mobile.file_upload.video": "Galeria de Videos",
|
||||||
"mobile.files_paste.error_description": "Ocorreu um erro enquanto colava o arquivo. Por favor tente novamente.",
|
"mobile.files_paste.error_description": "Ocorreu um erro enquanto colava o arquivo. Por favor tente novamente.",
|
||||||
@@ -296,9 +379,11 @@
|
|||||||
"mobile.files_paste.error_title": "Colar falhou",
|
"mobile.files_paste.error_title": "Colar falhou",
|
||||||
"mobile.flagged_posts.empty_description": "As mensagens salvas são visíveis apenas para você. Marque mensagens para acompanhamento ou salve algo para mais tarde mantendo uma mensagem pressionada e escolhendo Salvar no menu.",
|
"mobile.flagged_posts.empty_description": "As mensagens salvas são visíveis apenas para você. Marque mensagens para acompanhamento ou salve algo para mais tarde mantendo uma mensagem pressionada e escolhendo Salvar no menu.",
|
||||||
"mobile.flagged_posts.empty_title": "Nenhuma mensagem salva",
|
"mobile.flagged_posts.empty_title": "Nenhuma mensagem salva",
|
||||||
|
"mobile.forms.select.done": "Feito",
|
||||||
"mobile.gallery.title": "{index} de {total}",
|
"mobile.gallery.title": "{index} de {total}",
|
||||||
"mobile.general.error.title": "Erro",
|
"mobile.general.error.title": "Erro",
|
||||||
"mobile.help.title": "Ajuda",
|
"mobile.help.title": "Ajuda",
|
||||||
|
"mobile.interactive_dialog.defaultSubmit": "Enviar",
|
||||||
"mobile.intro_messages.DM": "Este é o início do seu histórico de mensagens diretas com {teammate}. Mensagens diretas e arquivos compartilhados aqui não são mostrados para pessoas de fora desta área.",
|
"mobile.intro_messages.DM": "Este é o início do seu histórico de mensagens diretas com {teammate}. Mensagens diretas e arquivos compartilhados aqui não são mostrados para pessoas de fora desta área.",
|
||||||
"mobile.intro_messages.default_message": "Este é o primeiro canal da equipe veja quando eles se registrarem - use para postar atualizações que todos devem saber.",
|
"mobile.intro_messages.default_message": "Este é o primeiro canal da equipe veja quando eles se registrarem - use para postar atualizações que todos devem saber.",
|
||||||
"mobile.intro_messages.default_welcome": "Bem-vindo ao {name}!",
|
"mobile.intro_messages.default_welcome": "Bem-vindo ao {name}!",
|
||||||
@@ -330,6 +415,8 @@
|
|||||||
"mobile.message_length.message": "Sua mensagem atual é muito grande. Contagem corrente de caracters: {max}/{count}",
|
"mobile.message_length.message": "Sua mensagem atual é muito grande. Contagem corrente de caracters: {max}/{count}",
|
||||||
"mobile.message_length.message_split_left": "Mensagem excede o limite de caracteres",
|
"mobile.message_length.message_split_left": "Mensagem excede o limite de caracteres",
|
||||||
"mobile.message_length.title": "Tamanho da Mensagem",
|
"mobile.message_length.title": "Tamanho da Mensagem",
|
||||||
|
"mobile.microphone_permission_denied_description": "Para participar desta chamada, abra Configurações para conceder ao Mattermost acesso ao seu microfone.",
|
||||||
|
"mobile.microphone_permission_denied_title": "{applicationName} gostaria de acessar seu microfone",
|
||||||
"mobile.more_dms.add_more": "Você pode adicionar mais {remaining, number} usuários",
|
"mobile.more_dms.add_more": "Você pode adicionar mais {remaining, number} usuários",
|
||||||
"mobile.more_dms.cannot_add_more": "Você não pode adicionar mais usuários",
|
"mobile.more_dms.cannot_add_more": "Você não pode adicionar mais usuários",
|
||||||
"mobile.more_dms.one_more": "Você não pode adicionar mais 1 usuário",
|
"mobile.more_dms.one_more": "Você não pode adicionar mais 1 usuário",
|
||||||
@@ -349,6 +436,7 @@
|
|||||||
"mobile.notification_settings.email": "E-mail",
|
"mobile.notification_settings.email": "E-mail",
|
||||||
"mobile.notification_settings.email.send": "ENVIAR NOTIFICAÇÕES POR EMAIL",
|
"mobile.notification_settings.email.send": "ENVIAR NOTIFICAÇÕES POR EMAIL",
|
||||||
"mobile.notification_settings.email_title": "Notificações por Email",
|
"mobile.notification_settings.email_title": "Notificações por Email",
|
||||||
|
"mobile.notification_settings.mentions": "Menções",
|
||||||
"mobile.notification_settings.mentions.channelWide": "Menções de todo canal",
|
"mobile.notification_settings.mentions.channelWide": "Menções de todo canal",
|
||||||
"mobile.notification_settings.mentions.reply_title": "Enviar notificações de resposta para",
|
"mobile.notification_settings.mentions.reply_title": "Enviar notificações de resposta para",
|
||||||
"mobile.notification_settings.mentions.sensitiveName": "Seu primeiro nome em maiúsculas e minúsculas",
|
"mobile.notification_settings.mentions.sensitiveName": "Seu primeiro nome em maiúsculas e minúsculas",
|
||||||
@@ -359,6 +447,10 @@
|
|||||||
"mobile.notification_settings.modal_cancel": "CANCELAR",
|
"mobile.notification_settings.modal_cancel": "CANCELAR",
|
||||||
"mobile.notification_settings.modal_save": "SALVAR",
|
"mobile.notification_settings.modal_save": "SALVAR",
|
||||||
"mobile.notification_settings.ooo_auto_responder": "Respostas Automáticas para Mensagens Diretas",
|
"mobile.notification_settings.ooo_auto_responder": "Respostas Automáticas para Mensagens Diretas",
|
||||||
|
"mobile.notification_settings.push_threads.description": "Notificar-me sobre todas as respostas aos tópicos que estou seguindo",
|
||||||
|
"mobile.notification_settings.push_threads.info": "Quando ativado, qualquer resposta a um tópico que você está seguindo enviará uma notificação por push móvel.",
|
||||||
|
"mobile.notification_settings.push_threads.title": "NOTIFICAÇÕES DE RESPOSTA DE TÓPICOS",
|
||||||
|
"mobile.notification_settings.push_threads.title_android": "Notificações de resposta do tópico",
|
||||||
"mobile.notification_settings.save_failed_description": "As configurações de notificação não conseguiram salvar devido a um problema de conexão. Por favor tente novamente.",
|
"mobile.notification_settings.save_failed_description": "As configurações de notificação não conseguiram salvar devido a um problema de conexão. Por favor tente novamente.",
|
||||||
"mobile.notification_settings.save_failed_title": "Problema de conexão",
|
"mobile.notification_settings.save_failed_title": "Problema de conexão",
|
||||||
"mobile.notification_settings_mentions.keywords": "Palavras-chave",
|
"mobile.notification_settings_mentions.keywords": "Palavras-chave",
|
||||||
@@ -391,6 +483,8 @@
|
|||||||
"mobile.open_dm.error": "Não foi possível entrar nas mensagens diretas com {displayName}. Por favor verifique a sua conexão e tente novamente.",
|
"mobile.open_dm.error": "Não foi possível entrar nas mensagens diretas com {displayName}. Por favor verifique a sua conexão e tente novamente.",
|
||||||
"mobile.open_gm.error": "Não foi possível abrir uma mensagem em grupo com esses usuários. Por favor verifique sua conexão e tente novamente.",
|
"mobile.open_gm.error": "Não foi possível abrir uma mensagem em grupo com esses usuários. Por favor verifique sua conexão e tente novamente.",
|
||||||
"mobile.open_unknown_channel.error": "Não é possível entrar no canal. Por favor, limpe o cache e tente novamente.",
|
"mobile.open_unknown_channel.error": "Não é possível entrar no canal. Por favor, limpe o cache e tente novamente.",
|
||||||
|
"mobile.participants.header": "PARTICIPANTES DO TÓPICO",
|
||||||
|
"mobile.participants.you": "(você)",
|
||||||
"mobile.permission_denied_dismiss": "Não Permitir",
|
"mobile.permission_denied_dismiss": "Não Permitir",
|
||||||
"mobile.permission_denied_retry": "Configurações",
|
"mobile.permission_denied_retry": "Configurações",
|
||||||
"mobile.pinned_posts.empty_description": "Fixe mensagens importantes que sejam visíveis para todo o canal. Mantenha uma mensagem pressionada e escolha Fixar no canal para salvá-la aqui.",
|
"mobile.pinned_posts.empty_description": "Fixe mensagens importantes que sejam visíveis para todo o canal. Mantenha uma mensagem pressionada e escolha Fixar no canal para salvá-la aqui.",
|
||||||
@@ -418,6 +512,8 @@
|
|||||||
"mobile.post_textbox.entire_channel.message": "Usando @all ou @channel você está enviando notificações para {totalMembers, number} {totalMembers, plural, one {pessoa} other {pessoas}}. Você tem certeza que quer fazer isso?",
|
"mobile.post_textbox.entire_channel.message": "Usando @all ou @channel você está enviando notificações para {totalMembers, number} {totalMembers, plural, one {pessoa} other {pessoas}}. Você tem certeza que quer fazer isso?",
|
||||||
"mobile.post_textbox.entire_channel.message.with_timezones": "Usando @all ou @channel você está enviando notificações para {totalMembers, number} {totalMembers, plural, one {pessoa} other {pessoas}} em {timezones, number} {timezones, plural, one {fuso horário} other {fusos horários}}. Você tem certeza que quer fazer isso?",
|
"mobile.post_textbox.entire_channel.message.with_timezones": "Usando @all ou @channel você está enviando notificações para {totalMembers, number} {totalMembers, plural, one {pessoa} other {pessoas}} em {timezones, number} {timezones, plural, one {fuso horário} other {fusos horários}}. Você tem certeza que quer fazer isso?",
|
||||||
"mobile.post_textbox.entire_channel.title": "Confirmar o envio de notificações para o canal todo",
|
"mobile.post_textbox.entire_channel.title": "Confirmar o envio de notificações para o canal todo",
|
||||||
|
"mobile.post_textbox.entire_channel_here.message": "Ao usar @here você está prestes a enviar notificações para {totalMembers, number} {totalMembers, plural, one {person} other {people}}. Você tem certeza de que quer fazer isso?",
|
||||||
|
"mobile.post_textbox.entire_channel_here.message.with_timezones": "Ao usar @here, você está prestes a enviar notificações para {totalMembers, number} {totalMembers, plural, one {person} other {people}} em {timezones, number} {timezones, plural, one {timezone} other {timezones} }. Você tem certeza de que quer fazer isso?",
|
||||||
"mobile.post_textbox.groups.title": "Confirmar envio de notificações para grupos",
|
"mobile.post_textbox.groups.title": "Confirmar envio de notificações para grupos",
|
||||||
"mobile.post_textbox.multi_group.message.with_timezones": "Ao usar {mentions} e {finalMention}, você está prestes a enviar notificações para pelo menos {totalMembers} pessoas em {timezones, number} {timezones, plural, one {fuso horário} other {fusos horários}}. Você tem certeza de que quer fazer isso?",
|
"mobile.post_textbox.multi_group.message.with_timezones": "Ao usar {mentions} e {finalMention}, você está prestes a enviar notificações para pelo menos {totalMembers} pessoas em {timezones, number} {timezones, plural, one {fuso horário} other {fusos horários}}. Você tem certeza de que quer fazer isso?",
|
||||||
"mobile.post_textbox.multi_group.message.without_timezones": "Ao usar {mentions} e {finalMention}, você está prestes a enviar notificações para pelo menos {totalMembers} pessoas. Você tem certeza de que quer fazer isso?",
|
"mobile.post_textbox.multi_group.message.without_timezones": "Ao usar {mentions} e {finalMention}, você está prestes a enviar notificações para pelo menos {totalMembers} pessoas. Você tem certeza de que quer fazer isso?",
|
||||||
@@ -448,7 +544,7 @@
|
|||||||
"mobile.reset_status.alert_cancel": "Cancelar",
|
"mobile.reset_status.alert_cancel": "Cancelar",
|
||||||
"mobile.reset_status.alert_ok": "Ok",
|
"mobile.reset_status.alert_ok": "Ok",
|
||||||
"mobile.reset_status.title_ooo": "Desativar \"Fora Do Escritório\"?",
|
"mobile.reset_status.title_ooo": "Desativar \"Fora Do Escritório\"?",
|
||||||
"mobile.retry_message": "Atualização de mensagens falharam. Puxe para tentar novamente.",
|
"mobile.retry_message": "Falha ao buscar mensagens. Toque aqui para tentar novamente.",
|
||||||
"mobile.routes.channelInfo": "Informações",
|
"mobile.routes.channelInfo": "Informações",
|
||||||
"mobile.routes.channelInfo.createdBy": "Criado por {creator} em ",
|
"mobile.routes.channelInfo.createdBy": "Criado por {creator} em ",
|
||||||
"mobile.routes.channelInfo.delete_channel": "Arquivar Canal",
|
"mobile.routes.channelInfo.delete_channel": "Arquivar Canal",
|
||||||
@@ -460,6 +556,7 @@
|
|||||||
"mobile.routes.channel_members.action_message_confirm": "Você tem certeza que quer remover o membro selecionado do canal?",
|
"mobile.routes.channel_members.action_message_confirm": "Você tem certeza que quer remover o membro selecionado do canal?",
|
||||||
"mobile.routes.code": "{language} Código",
|
"mobile.routes.code": "{language} Código",
|
||||||
"mobile.routes.code.noLanguage": "Código",
|
"mobile.routes.code.noLanguage": "Código",
|
||||||
|
"mobile.routes.custom_status": "Definir um status",
|
||||||
"mobile.routes.edit_profile": "Editar Perfil",
|
"mobile.routes.edit_profile": "Editar Perfil",
|
||||||
"mobile.routes.login": "Login",
|
"mobile.routes.login": "Login",
|
||||||
"mobile.routes.loginOptions": "Selecionador de Login",
|
"mobile.routes.loginOptions": "Selecionador de Login",
|
||||||
@@ -470,10 +567,13 @@
|
|||||||
"mobile.routes.sso": "Single Sign-On",
|
"mobile.routes.sso": "Single Sign-On",
|
||||||
"mobile.routes.table": "Tabela",
|
"mobile.routes.table": "Tabela",
|
||||||
"mobile.routes.thread": "Tópico {channelName}",
|
"mobile.routes.thread": "Tópico {channelName}",
|
||||||
|
"mobile.routes.thread_crt": "Tópico",
|
||||||
|
"mobile.routes.thread_crt.in": "em {channelName}",
|
||||||
"mobile.routes.thread_dm": "Tópico Mensagem Direta",
|
"mobile.routes.thread_dm": "Tópico Mensagem Direta",
|
||||||
"mobile.routes.user_profile": "Perfil",
|
"mobile.routes.user_profile": "Perfil",
|
||||||
"mobile.routes.user_profile.edit": "Editar",
|
"mobile.routes.user_profile.edit": "Editar",
|
||||||
"mobile.routes.user_profile.local_time": "HORA LOCAL",
|
"mobile.routes.user_profile.local_time": "HORA LOCAL",
|
||||||
|
"mobile.routes.user_profile.organization": "ORGANIZAÇÃO",
|
||||||
"mobile.routes.user_profile.send_message": "Enviar Mensagem",
|
"mobile.routes.user_profile.send_message": "Enviar Mensagem",
|
||||||
"mobile.search.after_modifier_description": "encontrar publicações após uma data específica",
|
"mobile.search.after_modifier_description": "encontrar publicações após uma data específica",
|
||||||
"mobile.search.before_modifier_description": "encontrar publicações antes de uma data específica",
|
"mobile.search.before_modifier_description": "encontrar publicações antes de uma data específica",
|
||||||
@@ -543,6 +643,7 @@
|
|||||||
"mobile.user_list.deactivated": "Desativado",
|
"mobile.user_list.deactivated": "Desativado",
|
||||||
"mobile.user_removed.message": "Você foi removido do canal.",
|
"mobile.user_removed.message": "Você foi removido do canal.",
|
||||||
"mobile.user_removed.title": "Removido de {channelName}",
|
"mobile.user_removed.title": "Removido de {channelName}",
|
||||||
|
"mobile.video_playback.download": "Baixar video",
|
||||||
"mobile.video_playback.failed_description": "Ocorreu um erro ao tentar reproduzir o video.\n",
|
"mobile.video_playback.failed_description": "Ocorreu um erro ao tentar reproduzir o video.\n",
|
||||||
"mobile.video_playback.failed_title": "Erro ao realizar o playback do video",
|
"mobile.video_playback.failed_title": "Erro ao realizar o playback do video",
|
||||||
"mobile.youtube_playback_error.description": "Ocorreu um erro ao tentar executar um vídeo do YouTube.\nDetalhes: {details}",
|
"mobile.youtube_playback_error.description": "Ocorreu um erro ao tentar executar um vídeo do YouTube.\nDetalhes: {details}",
|
||||||
@@ -556,8 +657,10 @@
|
|||||||
"more_channels.dropdownTitle": "Exibir",
|
"more_channels.dropdownTitle": "Exibir",
|
||||||
"more_channels.noMore": "Não há mais canais para participar",
|
"more_channels.noMore": "Não há mais canais para participar",
|
||||||
"more_channels.publicChannels": "Canais Públicos",
|
"more_channels.publicChannels": "Canais Públicos",
|
||||||
|
"more_channels.sharedChannels": "Canais compartilhados",
|
||||||
"more_channels.showArchivedChannels": "Exibir: Canais Arquivados",
|
"more_channels.showArchivedChannels": "Exibir: Canais Arquivados",
|
||||||
"more_channels.showPublicChannels": "Exibir: Canais Públicos",
|
"more_channels.showPublicChannels": "Exibir: Canais Públicos",
|
||||||
|
"more_channels.showSharedChannels": "Mostrar: canais compartilhados",
|
||||||
"more_channels.title": "Mais Canais",
|
"more_channels.title": "Mais Canais",
|
||||||
"msg_typing.areTyping": "{users} e {last} estão digitando...",
|
"msg_typing.areTyping": "{users} e {last} estão digitando...",
|
||||||
"msg_typing.isTyping": "{user} está digitando...",
|
"msg_typing.isTyping": "{user} está digitando...",
|
||||||
@@ -606,6 +709,7 @@
|
|||||||
"sidebar.channels": "CANAIS PÚBLICOS",
|
"sidebar.channels": "CANAIS PÚBLICOS",
|
||||||
"sidebar.direct": "MENSAGENS DIRETAS",
|
"sidebar.direct": "MENSAGENS DIRETAS",
|
||||||
"sidebar.favorite": "CANAIS FAVORITOS",
|
"sidebar.favorite": "CANAIS FAVORITOS",
|
||||||
|
"sidebar.favorites": "Favoritos",
|
||||||
"sidebar.pg": "CANAIS PRIVADOS",
|
"sidebar.pg": "CANAIS PRIVADOS",
|
||||||
"sidebar.types.recent": "ATIVIDADE RECENTE",
|
"sidebar.types.recent": "ATIVIDADE RECENTE",
|
||||||
"sidebar.unreads": "Mais não lidos",
|
"sidebar.unreads": "Mais não lidos",
|
||||||
@@ -628,12 +732,22 @@
|
|||||||
"suggestion.mention.morechannels": "Outros Canais",
|
"suggestion.mention.morechannels": "Outros Canais",
|
||||||
"suggestion.mention.nonmembers": "Não no Canal",
|
"suggestion.mention.nonmembers": "Não no Canal",
|
||||||
"suggestion.mention.special": "Menções Especiais",
|
"suggestion.mention.special": "Menções Especiais",
|
||||||
"suggestion.mention.you": "(você)",
|
"suggestion.mention.you": " (você)",
|
||||||
"suggestion.search.direct": "Mensagens Diretas",
|
"suggestion.search.direct": "Mensagens Diretas",
|
||||||
"suggestion.search.private": "Canais Privados",
|
"suggestion.search.private": "Canais Privados",
|
||||||
"suggestion.search.public": "Canais Públicos",
|
"suggestion.search.public": "Canais Públicos",
|
||||||
"terms_of_service.agreeButton": "Eu Concordo",
|
"terms_of_service.agreeButton": "Eu Concordo",
|
||||||
"terms_of_service.api_error": "Não é possível concluir o pedido. Se esse problema persistir, entre em contato com o Administrador do Sistema.",
|
"terms_of_service.api_error": "Não é possível concluir o pedido. Se esse problema persistir, entre em contato com o Administrador do Sistema.",
|
||||||
|
"threads": "Tópicos",
|
||||||
|
"threads.deleted": "Mensagem original excluída",
|
||||||
|
"threads.follow": "Seguir",
|
||||||
|
"threads.followMessage": "Seguir mensagem",
|
||||||
|
"threads.followThread": "Seguir Tópico",
|
||||||
|
"threads.following": "Seguindo",
|
||||||
|
"threads.newReplies": "{count} novo {count, plural, one {reply} other {replies}}",
|
||||||
|
"threads.replies": "{count} {count, plural, one {reply} other {replies}}",
|
||||||
|
"threads.unfollowMessage": "Deixar de seguir a mensagem",
|
||||||
|
"threads.unfollowThread": "Deixar de seguir o tópico",
|
||||||
"user.settings.display.clockDisplay": "Exibição do Relógio",
|
"user.settings.display.clockDisplay": "Exibição do Relógio",
|
||||||
"user.settings.display.custom_theme": "Tema Personalizado",
|
"user.settings.display.custom_theme": "Tema Personalizado",
|
||||||
"user.settings.display.militaryClock": "Relógio de 24 horas (exemplo: 16:00)",
|
"user.settings.display.militaryClock": "Relógio de 24 horas (exemplo: 16:00)",
|
||||||
@@ -652,6 +766,7 @@
|
|||||||
"user.settings.general.lastName": "Último Nome",
|
"user.settings.general.lastName": "Último Nome",
|
||||||
"user.settings.general.nickname": "Apelido",
|
"user.settings.general.nickname": "Apelido",
|
||||||
"user.settings.general.position": "Cargo",
|
"user.settings.general.position": "Cargo",
|
||||||
|
"user.settings.general.status": "Status",
|
||||||
"user.settings.general.username": "Usuário",
|
"user.settings.general.username": "Usuário",
|
||||||
"user.settings.modal.display": "Exibição",
|
"user.settings.modal.display": "Exibição",
|
||||||
"user.settings.modal.notifications": "Notificações",
|
"user.settings.modal.notifications": "Notificações",
|
||||||
@@ -663,6 +778,10 @@
|
|||||||
"user.settings.notifications.email.never": "Nunca",
|
"user.settings.notifications.email.never": "Nunca",
|
||||||
"user.settings.notifications.email.send": "Enviar notificações por email",
|
"user.settings.notifications.email.send": "Enviar notificações por email",
|
||||||
"user.settings.notifications.emailInfo": "As notificações por email são enviadas para menções e mensagens diretas quando você estiver offline ou ausente por mais de 5 minutos.",
|
"user.settings.notifications.emailInfo": "As notificações por email são enviadas para menções e mensagens diretas quando você estiver offline ou ausente por mais de 5 minutos.",
|
||||||
|
"user.settings.notifications.email_threads.description": "Notifique-me sobre todas as respostas aos tópicos que estou seguindo.",
|
||||||
|
"user.settings.notifications.email_threads.info": "Quando ativado, qualquer resposta a uma conversa que você está seguindo enviará uma notificação por e-mail.",
|
||||||
|
"user.settings.notifications.email_threads.title": "NOTIFICAÇÕES DE RESPOSTA DE TÓPICOS",
|
||||||
|
"user.settings.notifications.email_threads.title_android": "Notificações de resposta do tópico",
|
||||||
"user.settings.notifications.never": "Nunca",
|
"user.settings.notifications.never": "Nunca",
|
||||||
"user.settings.notifications.onlyMentions": "Somente para menções e mensagens diretas",
|
"user.settings.notifications.onlyMentions": "Somente para menções e mensagens diretas",
|
||||||
"user.settings.push_notification.away": "Ausente ou desconectado",
|
"user.settings.push_notification.away": "Ausente ou desconectado",
|
||||||
|
|||||||
@@ -343,7 +343,7 @@
|
|||||||
"mobile.downloader.disabled_title": "Nedladdning inaktiverat",
|
"mobile.downloader.disabled_title": "Nedladdning inaktiverat",
|
||||||
"mobile.downloader.failed_description": "Ett fel inträffade när filen skulle laddas ner. Kontrollera din anslutning till internet och försök igen.\n",
|
"mobile.downloader.failed_description": "Ett fel inträffade när filen skulle laddas ner. Kontrollera din anslutning till internet och försök igen.\n",
|
||||||
"mobile.downloader.failed_title": "Nedladdning misslyckades",
|
"mobile.downloader.failed_title": "Nedladdning misslyckades",
|
||||||
"mobile.drawer.teamsTitle": "Grupper",
|
"mobile.drawer.teamsTitle": "Team",
|
||||||
"mobile.edit_channel": "Spara",
|
"mobile.edit_channel": "Spara",
|
||||||
"mobile.edit_post.title": "Editerar meddelande",
|
"mobile.edit_post.title": "Editerar meddelande",
|
||||||
"mobile.edit_profile.remove_profile_photo": "Ta bort foto",
|
"mobile.edit_profile.remove_profile_photo": "Ta bort foto",
|
||||||
@@ -561,8 +561,8 @@
|
|||||||
"mobile.routes.login": "Logga in",
|
"mobile.routes.login": "Logga in",
|
||||||
"mobile.routes.loginOptions": "Välj inloggningsmetod",
|
"mobile.routes.loginOptions": "Välj inloggningsmetod",
|
||||||
"mobile.routes.mfa": "Flerfaktorsautentisering",
|
"mobile.routes.mfa": "Flerfaktorsautentisering",
|
||||||
"mobile.routes.selectChannel": "Ändra kanalnamn",
|
"mobile.routes.selectChannel": "Välj kanal",
|
||||||
"mobile.routes.selectTeam": "Välj grupp",
|
"mobile.routes.selectTeam": "Välj team",
|
||||||
"mobile.routes.settings": "Inställningar",
|
"mobile.routes.settings": "Inställningar",
|
||||||
"mobile.routes.sso": "Auto-inloggning",
|
"mobile.routes.sso": "Auto-inloggning",
|
||||||
"mobile.routes.table": "Tabell",
|
"mobile.routes.table": "Tabell",
|
||||||
@@ -586,7 +586,7 @@
|
|||||||
"mobile.search.on_modifier_description": "för att hitta inlägg före ett visst datum",
|
"mobile.search.on_modifier_description": "för att hitta inlägg före ett visst datum",
|
||||||
"mobile.search.recent_title": "Senaste sökningar",
|
"mobile.search.recent_title": "Senaste sökningar",
|
||||||
"mobile.select_team.guest_cant_join_team": "Ditt gästkonto finns inte i något team eller kanal. Kontakta en administratör.",
|
"mobile.select_team.guest_cant_join_team": "Ditt gästkonto finns inte i något team eller kanal. Kontakta en administratör.",
|
||||||
"mobile.select_team.join_open": "Öppna grupper du kan gå med i",
|
"mobile.select_team.join_open": "Öppna team du kan gå med i",
|
||||||
"mobile.select_team.no_teams": "Det finns inget team tillgängligt för dig att ansluta till.",
|
"mobile.select_team.no_teams": "Det finns inget team tillgängligt för dig att ansluta till.",
|
||||||
"mobile.server_link.error.text": "Länken kunde inte hittas på servern.",
|
"mobile.server_link.error.text": "Länken kunde inte hittas på servern.",
|
||||||
"mobile.server_link.error.title": "Länk-fel",
|
"mobile.server_link.error.title": "Länk-fel",
|
||||||
|
|||||||
@@ -107,7 +107,7 @@
|
|||||||
"channel_notifications.preference.global_default": "Genel varsayılan ({notifyLevel})",
|
"channel_notifications.preference.global_default": "Genel varsayılan ({notifyLevel})",
|
||||||
"channel_notifications.preference.header": "Bildirimler gönderimi",
|
"channel_notifications.preference.header": "Bildirimler gönderimi",
|
||||||
"channel_notifications.preference.never": "Asla",
|
"channel_notifications.preference.never": "Asla",
|
||||||
"channel_notifications.preference.only_mentions": "Yalnız anmalar ve doğrudan iletiler",
|
"channel_notifications.preference.only_mentions": "Yalnızca anmalar ve doğrudan iletiler",
|
||||||
"channel_notifications.preference.save_error": "Bildirim ayarı kaydedilemedi. Lütfen bağlantınızı denetleyip yeniden deneyin.",
|
"channel_notifications.preference.save_error": "Bildirim ayarı kaydedilemedi. Lütfen bağlantınızı denetleyip yeniden deneyin.",
|
||||||
"combined_system_message.added_to_channel.many_expanded": "{users} ve {lastUser} {actor} tarafından **kanala eklendi**.",
|
"combined_system_message.added_to_channel.many_expanded": "{users} ve {lastUser} {actor} tarafından **kanala eklendi**.",
|
||||||
"combined_system_message.added_to_channel.one": "{firstUser} {actor} tarafından **kanala eklendi**.",
|
"combined_system_message.added_to_channel.one": "{firstUser} {actor} tarafından **kanala eklendi**.",
|
||||||
@@ -202,8 +202,8 @@
|
|||||||
"gallery.unsuppored": "Bu dosya türü ön izlenemiyor",
|
"gallery.unsuppored": "Bu dosya türü ön izlenemiyor",
|
||||||
"get_post_link_modal.title": "Bağlantıyı kopyala",
|
"get_post_link_modal.title": "Bağlantıyı kopyala",
|
||||||
"global_threads.allThreads": "Tüm konularınız",
|
"global_threads.allThreads": "Tüm konularınız",
|
||||||
"global_threads.emptyThreads.message": "Bahsettiğiniz veya katıldığınız tüm konular, takip ettiğiniz tüm konularla birlikte burada görüntülenir.",
|
"global_threads.emptyThreads.message": "Bahsettiğiniz veya katıldığınız tüm konular, izlediğiniz tüm konularla birlikte burada görüntülenir.",
|
||||||
"global_threads.emptyThreads.title": "Takip edilen bir konu yok",
|
"global_threads.emptyThreads.title": "İzlenen bir konu yok",
|
||||||
"global_threads.emptyUnreads.message": "Tüm konulara bakmışsınız gibi görünüyor.",
|
"global_threads.emptyUnreads.message": "Tüm konulara bakmışsınız gibi görünüyor.",
|
||||||
"global_threads.emptyUnreads.title": "Okunmamış bir konu yok",
|
"global_threads.emptyUnreads.title": "Okunmamış bir konu yok",
|
||||||
"global_threads.markAllRead.cancel": "İptal",
|
"global_threads.markAllRead.cancel": "İptal",
|
||||||
@@ -222,7 +222,7 @@
|
|||||||
"intro_messages.creatorPrivate": "{name} özel kanalı, {creator} tarafından {date} tarihinde başlatılmış.",
|
"intro_messages.creatorPrivate": "{name} özel kanalı, {creator} tarafından {date} tarihinde başlatılmış.",
|
||||||
"intro_messages.group_message": "Bu takım arkadaşlarınız ile doğrudan ileti geçmişinizin başlangıcı. Bu bölüm dışındaki kişiler burada paylaşılan doğrudan ileti ve dosyaları göremez.",
|
"intro_messages.group_message": "Bu takım arkadaşlarınız ile doğrudan ileti geçmişinizin başlangıcı. Bu bölüm dışındaki kişiler burada paylaşılan doğrudan ileti ve dosyaları göremez.",
|
||||||
"intro_messages.noCreator": "{date} tarihinde oluşturulmuş {name} kanalının başlangıcı.",
|
"intro_messages.noCreator": "{date} tarihinde oluşturulmuş {name} kanalının başlangıcı.",
|
||||||
"intro_messages.onlyInvited": " Bu özel kanalı yalnız çağrılmış üyeler görüntüleyebilir.",
|
"intro_messages.onlyInvited": " Bu özel kanalı yalnızca çağrılmış üyeler görüntüleyebilir.",
|
||||||
"last_users_message.added_to_channel.type": "{actor} tarafından **kanala eklendiniz**.",
|
"last_users_message.added_to_channel.type": "{actor} tarafından **kanala eklendiniz**.",
|
||||||
"last_users_message.added_to_team.type": "{actor} tarafından **takıma eklendiniz**.",
|
"last_users_message.added_to_team.type": "{actor} tarafından **takıma eklendiniz**.",
|
||||||
"last_users_message.first": "{firstUser} ve ",
|
"last_users_message.first": "{firstUser} ve ",
|
||||||
@@ -289,7 +289,7 @@
|
|||||||
"mobile.camera_video_permission_denied_description": "Görüntü çekin ve Mattermost kopyanıza yükleyin ya da aygıtınıza kaydedin. Mattermost uygulamasına kameranızı okuma ve yazma izni vermek için ayarları açın.",
|
"mobile.camera_video_permission_denied_description": "Görüntü çekin ve Mattermost kopyanıza yükleyin ya da aygıtınıza kaydedin. Mattermost uygulamasına kameranızı okuma ve yazma izni vermek için ayarları açın.",
|
||||||
"mobile.camera_video_permission_denied_title": "{applicationName} kameranıza erişmek istiyor",
|
"mobile.camera_video_permission_denied_title": "{applicationName} kameranıza erişmek istiyor",
|
||||||
"mobile.channel_drawer.search": "Kanal ara",
|
"mobile.channel_drawer.search": "Kanal ara",
|
||||||
"mobile.channel_info.alertMessageConvertChannel": "{displayName} özel bir kanala dönüştürüldüğünde, geçmiş iletiler ve üyelikler korunur. Herkese açık olarak paylaşılmış dosyalara bağlantıya sahip olan herkes erişmeye devam edebilir. Özel kanallara yalnız çağrı ile üye olunabilir. \n \nBu değişiklik kalıcıdır ve geri alınamaz.\n\n{displayName} kanalını özel kanala dönüştürmek istediğinize emin misiniz?",
|
"mobile.channel_info.alertMessageConvertChannel": "{displayName} özel bir kanala dönüştürüldüğünde, geçmiş iletiler ve üyelikler korunur. Herkese açık olarak paylaşılmış dosyalara bağlantıya sahip olan herkes erişmeye devam edebilir. Özel kanallara yalnızca çağrı ile üye olunabilir. \n \nBu değişiklik kalıcıdır ve geri alınamaz.\n\n{displayName} kanalını özel kanala dönüştürmek istediğinize emin misiniz?",
|
||||||
"mobile.channel_info.alertMessageDeleteChannel": "{term} {name} kanalını arşivlemek istediğinize emin misiniz?",
|
"mobile.channel_info.alertMessageDeleteChannel": "{term} {name} kanalını arşivlemek istediğinize emin misiniz?",
|
||||||
"mobile.channel_info.alertMessageLeaveChannel": "{term} {name} kanalından ayrılmak istediğinize emin misiniz?",
|
"mobile.channel_info.alertMessageLeaveChannel": "{term} {name} kanalından ayrılmak istediğinize emin misiniz?",
|
||||||
"mobile.channel_info.alertMessageUnarchiveChannel": "{term} {name} kanalını arşivden çıkarmak istediğinize emin misiniz?",
|
"mobile.channel_info.alertMessageUnarchiveChannel": "{term} {name} kanalını arşivden çıkarmak istediğinize emin misiniz?",
|
||||||
@@ -372,12 +372,12 @@
|
|||||||
"mobile.file_upload.disabled2": "Mobil uygulamadan dosya yüklemek devre dışı bırakılmış.",
|
"mobile.file_upload.disabled2": "Mobil uygulamadan dosya yüklemek devre dışı bırakılmış.",
|
||||||
"mobile.file_upload.library": "Fotoğraf kitaplığı",
|
"mobile.file_upload.library": "Fotoğraf kitaplığı",
|
||||||
"mobile.file_upload.max_warning": "En fazla {count} dosya yüklenebilir.",
|
"mobile.file_upload.max_warning": "En fazla {count} dosya yüklenebilir.",
|
||||||
"mobile.file_upload.unsupportedMimeType": "Profil görseli olarak yalnız BMP, JPG ya da PNG dosyaları kullanılabilir.",
|
"mobile.file_upload.unsupportedMimeType": "Profil görseli olarak yalnızca BMP, JPG ya da PNG dosyaları kullanılabilir.",
|
||||||
"mobile.file_upload.video": "Görüntü kitaplığı",
|
"mobile.file_upload.video": "Görüntü kitaplığı",
|
||||||
"mobile.files_paste.error_description": "Dosyalar yapıştırılırken bir sorun çıktı. Lütfen yeniden deneyin.",
|
"mobile.files_paste.error_description": "Dosyalar yapıştırılırken bir sorun çıktı. Lütfen yeniden deneyin.",
|
||||||
"mobile.files_paste.error_dismiss": "Yok say",
|
"mobile.files_paste.error_dismiss": "Yok say",
|
||||||
"mobile.files_paste.error_title": "Yapıştırılamadı",
|
"mobile.files_paste.error_title": "Yapıştırılamadı",
|
||||||
"mobile.flagged_posts.empty_description": "Kaydedilmiş iletileri yalnız siz görebilirsiniz. İletileri takip etmek için işaretleyin ya da bir şeyi kaydetmek için ileti üzerine uzun basıp menüden Kaydet komutunu seçin.",
|
"mobile.flagged_posts.empty_description": "Kaydedilmiş iletileri yalnızca siz görebilirsiniz. İletileri izlemek için işaretleyin ya da bir şeyi kaydetmek için ileti üzerine uzun basıp menüden Kaydet komutunu seçin.",
|
||||||
"mobile.flagged_posts.empty_title": "Kaydedilmiş bir ileti yok",
|
"mobile.flagged_posts.empty_title": "Kaydedilmiş bir ileti yok",
|
||||||
"mobile.forms.select.done": "Tamam",
|
"mobile.forms.select.done": "Tamam",
|
||||||
"mobile.gallery.title": "{index} / {total}",
|
"mobile.gallery.title": "{index} / {total}",
|
||||||
@@ -447,8 +447,8 @@
|
|||||||
"mobile.notification_settings.modal_cancel": "İPTAL",
|
"mobile.notification_settings.modal_cancel": "İPTAL",
|
||||||
"mobile.notification_settings.modal_save": "KAYDET",
|
"mobile.notification_settings.modal_save": "KAYDET",
|
||||||
"mobile.notification_settings.ooo_auto_responder": "Otomatik doğrudan ileti yanıtları",
|
"mobile.notification_settings.ooo_auto_responder": "Otomatik doğrudan ileti yanıtları",
|
||||||
"mobile.notification_settings.push_threads.description": "Takip ettiğim konulara yazılan tüm yanıtlar ile ilgili bildirim gönderilsin",
|
"mobile.notification_settings.push_threads.description": "İzlediğim konulara yazılan tüm yanıtlar ile ilgili bildirim gönderilsin",
|
||||||
"mobile.notification_settings.push_threads.info": "Bu seçenek etkinleştirildiğinde, takip ettiğiniz bir konuya yazılan yanıtlar mobil anında bildirim olarak iletilir.",
|
"mobile.notification_settings.push_threads.info": "Bu seçenek etkinleştirildiğinde, izlediğiniz bir konuya yazılan yanıtlar mobil uygulamada anında bildirim olarak iletilir.",
|
||||||
"mobile.notification_settings.push_threads.title": "KONU YANITI BİLDİRİMLERİ",
|
"mobile.notification_settings.push_threads.title": "KONU YANITI BİLDİRİMLERİ",
|
||||||
"mobile.notification_settings.push_threads.title_android": "Konu yanıtı bildirimleri",
|
"mobile.notification_settings.push_threads.title_android": "Konu yanıtı bildirimleri",
|
||||||
"mobile.notification_settings.save_failed_description": "Bir bağlantı sorunu nedeniyle bildirim ayarları kaydedilemedi. Lütfen yeniden deneyin.",
|
"mobile.notification_settings.save_failed_description": "Bir bağlantı sorunu nedeniyle bildirim ayarları kaydedilemedi. Lütfen yeniden deneyin.",
|
||||||
@@ -740,10 +740,10 @@
|
|||||||
"terms_of_service.api_error": "İstek yerine getirilemedi. Sorun sürerse sistem yöneticiniz ile görüşün.",
|
"terms_of_service.api_error": "İstek yerine getirilemedi. Sorun sürerse sistem yöneticiniz ile görüşün.",
|
||||||
"threads": "Konular",
|
"threads": "Konular",
|
||||||
"threads.deleted": "Özgün ileti silindi",
|
"threads.deleted": "Özgün ileti silindi",
|
||||||
"threads.follow": "Takip et",
|
"threads.follow": "İzle",
|
||||||
"threads.followMessage": "İletiyi takip et",
|
"threads.followMessage": "İletiyi izle",
|
||||||
"threads.followThread": "Konuyu takip et",
|
"threads.followThread": "Konuyu izle",
|
||||||
"threads.following": "Takip ediliyor",
|
"threads.following": "İzleniyor",
|
||||||
"threads.newReplies": "{count} yeni {count, plural, one {yanıt} other {yanıt}}",
|
"threads.newReplies": "{count} yeni {count, plural, one {yanıt} other {yanıt}}",
|
||||||
"threads.replies": "{count} {count, plural, one {yanıt} other {yanıt}}",
|
"threads.replies": "{count} {count, plural, one {yanıt} other {yanıt}}",
|
||||||
"threads.unfollowMessage": "İletiyi takibi bırak",
|
"threads.unfollowMessage": "İletiyi takibi bırak",
|
||||||
@@ -778,12 +778,12 @@
|
|||||||
"user.settings.notifications.email.never": "Asla",
|
"user.settings.notifications.email.never": "Asla",
|
||||||
"user.settings.notifications.email.send": "E-posta bildirimleri gönderilsin",
|
"user.settings.notifications.email.send": "E-posta bildirimleri gönderilsin",
|
||||||
"user.settings.notifications.emailInfo": "5 dakikadan uzun süre uzak ya da çevrimdışı olduğunuzda anma ve doğrudan iletiler için e-posta bildirimi gönderilir.",
|
"user.settings.notifications.emailInfo": "5 dakikadan uzun süre uzak ya da çevrimdışı olduğunuzda anma ve doğrudan iletiler için e-posta bildirimi gönderilir.",
|
||||||
"user.settings.notifications.email_threads.description": "Takip ettiğim konulara yazılan tüm yanıtlar ile ilgili bildirim gönderilsin.",
|
"user.settings.notifications.email_threads.description": "İzlediğim konulara yazılan tüm yanıtlar ile ilgili bildirim gönderilsin.",
|
||||||
"user.settings.notifications.email_threads.info": "Bu seçenek etkinleştirildiğinde, takip ettiğiniz bir konuya yazılan yanıtlar e-posta bildirimi olarak iletilir.",
|
"user.settings.notifications.email_threads.info": "Bu seçenek etkinleştirildiğinde, izlediğiniz bir konuya yazılan yanıtlar e-posta bildirimi olarak iletilir.",
|
||||||
"user.settings.notifications.email_threads.title": "KONU YANITI BİLDİRİMLERİ",
|
"user.settings.notifications.email_threads.title": "KONU YANITI BİLDİRİMLERİ",
|
||||||
"user.settings.notifications.email_threads.title_android": "Konu yanıtı bildirimleri",
|
"user.settings.notifications.email_threads.title_android": "Konu yanıtı bildirimleri",
|
||||||
"user.settings.notifications.never": "Asla",
|
"user.settings.notifications.never": "Asla",
|
||||||
"user.settings.notifications.onlyMentions": "Yalnız anmalar ve doğrudan iletiler için",
|
"user.settings.notifications.onlyMentions": "Yalnızca anmalar ve doğrudan iletiler için",
|
||||||
"user.settings.push_notification.away": "Uzakta ya da çevrimdışı",
|
"user.settings.push_notification.away": "Uzakta ya da çevrimdışı",
|
||||||
"user.settings.push_notification.disabled": "Anında bildirimler devre dışı bırakılmış",
|
"user.settings.push_notification.disabled": "Anında bildirimler devre dışı bırakılmış",
|
||||||
"user.settings.push_notification.disabled_long": "Anında bildirimler sistem yöneticiniz tarafından devre dışı bırakılmış.",
|
"user.settings.push_notification.disabled_long": "Anında bildirimler sistem yöneticiniz tarafından devre dışı bırakılmış.",
|
||||||
|
|||||||
45
build/notice-file/Readme.md
Normal file
45
build/notice-file/Readme.md
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# Notice.txt File Configuration
|
||||||
|
|
||||||
|
We are automatically generating Notice.txt by using first-level dependencies of the project. The related pipeline uses `config.yaml` stored in this folder.
|
||||||
|
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
Notice.txt will be always generated from first-level dependencies scanned from package.json files. For some cases it may be useful to define
|
||||||
|
the dependency to add its licence to the Notice.txt even if it is not a first-level dependency or development dependency.
|
||||||
|
|
||||||
|
For instance, at the desktop project we need to add `wix`'s licence to the Notice.txt even if it is not a first-level dependency. To do that define
|
||||||
|
all dependencies at `dependencies` array at the configuration. For any dependency at `dependencies` section, pipeline code will add their
|
||||||
|
licenses to the Notice.txt file.
|
||||||
|
|
||||||
|
At the webapp project, `webpack` is used in `devDependencies` and it is requested because we are using some files generated by `webpack`. If there is any dependency
|
||||||
|
referenced at `devDependencies` section, pipeline will add those dependency licences when they are referenced at `package.json` files.
|
||||||
|
|
||||||
|
Sample:
|
||||||
|
|
||||||
|
```
|
||||||
|
title: "Mattermost Mobile"
|
||||||
|
copyright: "© 2016-present Mattermost, Inc. All Rights Reserved. See LICENSE.txt for license information."
|
||||||
|
description: "This document includes a list of open source components used in Mattermost Mobile, including those that have been modified."
|
||||||
|
reviewers:
|
||||||
|
- mattermost/release-managers
|
||||||
|
- enahum
|
||||||
|
search:
|
||||||
|
- "package.json"
|
||||||
|
dependencies:
|
||||||
|
- "wix"
|
||||||
|
devDependencies:
|
||||||
|
- "webpack"
|
||||||
|
```
|
||||||
|
|
||||||
|
| Field | Type | Purpose |
|
||||||
|
| :-- | :-- | :-- |
|
||||||
|
| title | string | Field content will be used as a title of the application. See first line of `NOTICE.txt` file. |
|
||||||
|
| copyright | string | Field content will be used as a copyright message. See second line of `NOTICE.txt` file. |
|
||||||
|
| description | string | Field content will be used as notice file description. See third line of `NOTICE.txt` file. |
|
||||||
|
| reviewers | array of GitHub user/teams | Those will be automatically assigned to the PRs as reviewers. |
|
||||||
|
| dependencies | array | If any dependency name mentioned, it will be automatically added even if it is not a first-level dependency. |
|
||||||
|
| devDependencies | array | If any dependency name mentioned, it will be added when it is referenced in devDependency section. |
|
||||||
|
| search | array | Pipeline will search for package.json files mentioned here. Globstar format is supported ie. `packages/**/package.json`. |
|
||||||
|
|
||||||
|
|
||||||
14
build/notice-file/config.yaml
Normal file
14
build/notice-file/config.yaml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
title: "Mattermost Mobile"
|
||||||
|
copyright: "© 2016-present Mattermost, Inc. All Rights Reserved. See LICENSE.txt for license information."
|
||||||
|
description: "This document includes a list of open source components used in Mattermost Mobile, including those that have been modified."
|
||||||
|
reviewers:
|
||||||
|
- "mattermost/release-managers"
|
||||||
|
- "enahum"
|
||||||
|
search:
|
||||||
|
- "package.json"
|
||||||
|
dependencies: []
|
||||||
|
devDependencies: []
|
||||||
|
|
||||||
|
...
|
||||||
@@ -8,8 +8,8 @@ GEM
|
|||||||
artifactory (3.0.15)
|
artifactory (3.0.15)
|
||||||
atomos (0.1.3)
|
atomos (0.1.3)
|
||||||
aws-eventstream (1.2.0)
|
aws-eventstream (1.2.0)
|
||||||
aws-partitions (1.590.0)
|
aws-partitions (1.602.0)
|
||||||
aws-sdk-core (3.131.1)
|
aws-sdk-core (3.131.2)
|
||||||
aws-eventstream (~> 1, >= 1.0.2)
|
aws-eventstream (~> 1, >= 1.0.2)
|
||||||
aws-partitions (~> 1, >= 1.525.0)
|
aws-partitions (~> 1, >= 1.525.0)
|
||||||
aws-sigv4 (~> 1.1)
|
aws-sigv4 (~> 1.1)
|
||||||
@@ -56,8 +56,8 @@ GEM
|
|||||||
faraday-em_synchrony (1.0.0)
|
faraday-em_synchrony (1.0.0)
|
||||||
faraday-excon (1.1.0)
|
faraday-excon (1.1.0)
|
||||||
faraday-httpclient (1.0.1)
|
faraday-httpclient (1.0.1)
|
||||||
faraday-multipart (1.0.3)
|
faraday-multipart (1.0.4)
|
||||||
multipart-post (>= 1.2, < 3)
|
multipart-post (~> 2)
|
||||||
faraday-net_http (1.0.1)
|
faraday-net_http (1.0.1)
|
||||||
faraday-net_http_persistent (1.2.0)
|
faraday-net_http_persistent (1.2.0)
|
||||||
faraday-patron (1.0.0)
|
faraday-patron (1.0.0)
|
||||||
@@ -66,7 +66,7 @@ GEM
|
|||||||
faraday_middleware (1.2.0)
|
faraday_middleware (1.2.0)
|
||||||
faraday (~> 1.0)
|
faraday (~> 1.0)
|
||||||
fastimage (2.2.6)
|
fastimage (2.2.6)
|
||||||
fastlane (2.206.1)
|
fastlane (2.207.0)
|
||||||
CFPropertyList (>= 2.3, < 4.0.0)
|
CFPropertyList (>= 2.3, < 4.0.0)
|
||||||
addressable (>= 2.8, < 3.0.0)
|
addressable (>= 2.8, < 3.0.0)
|
||||||
artifactory (~> 3.0)
|
artifactory (~> 3.0)
|
||||||
@@ -111,9 +111,9 @@ GEM
|
|||||||
fastlane-plugin-find_replace_string (0.1.0)
|
fastlane-plugin-find_replace_string (0.1.0)
|
||||||
fastlane-plugin-versioning_android (0.1.0)
|
fastlane-plugin-versioning_android (0.1.0)
|
||||||
gh_inspector (1.1.3)
|
gh_inspector (1.1.3)
|
||||||
google-apis-androidpublisher_v3 (0.21.0)
|
google-apis-androidpublisher_v3 (0.23.0)
|
||||||
google-apis-core (>= 0.4, < 2.a)
|
google-apis-core (>= 0.6, < 2.a)
|
||||||
google-apis-core (0.5.0)
|
google-apis-core (0.7.0)
|
||||||
addressable (~> 2.5, >= 2.5.1)
|
addressable (~> 2.5, >= 2.5.1)
|
||||||
googleauth (>= 0.16.2, < 2.a)
|
googleauth (>= 0.16.2, < 2.a)
|
||||||
httpclient (>= 2.8.1, < 3.a)
|
httpclient (>= 2.8.1, < 3.a)
|
||||||
@@ -122,19 +122,19 @@ GEM
|
|||||||
retriable (>= 2.0, < 4.a)
|
retriable (>= 2.0, < 4.a)
|
||||||
rexml
|
rexml
|
||||||
webrick
|
webrick
|
||||||
google-apis-iamcredentials_v1 (0.10.0)
|
google-apis-iamcredentials_v1 (0.12.0)
|
||||||
google-apis-core (>= 0.4, < 2.a)
|
google-apis-core (>= 0.6, < 2.a)
|
||||||
google-apis-playcustomapp_v1 (0.7.0)
|
google-apis-playcustomapp_v1 (0.9.0)
|
||||||
google-apis-core (>= 0.4, < 2.a)
|
google-apis-core (>= 0.6, < 2.a)
|
||||||
google-apis-storage_v1 (0.14.0)
|
google-apis-storage_v1 (0.16.0)
|
||||||
google-apis-core (>= 0.4, < 2.a)
|
google-apis-core (>= 0.6, < 2.a)
|
||||||
google-cloud-core (1.6.0)
|
google-cloud-core (1.6.0)
|
||||||
google-cloud-env (~> 1.0)
|
google-cloud-env (~> 1.0)
|
||||||
google-cloud-errors (~> 1.0)
|
google-cloud-errors (~> 1.0)
|
||||||
google-cloud-env (1.6.0)
|
google-cloud-env (1.6.0)
|
||||||
faraday (>= 0.17.3, < 3.0)
|
faraday (>= 0.17.3, < 3.0)
|
||||||
google-cloud-errors (1.2.0)
|
google-cloud-errors (1.2.0)
|
||||||
google-cloud-storage (1.36.2)
|
google-cloud-storage (1.37.0)
|
||||||
addressable (~> 2.8)
|
addressable (~> 2.8)
|
||||||
digest-crc (~> 0.4)
|
digest-crc (~> 0.4)
|
||||||
google-apis-iamcredentials_v1 (~> 0.1)
|
google-apis-iamcredentials_v1 (~> 0.1)
|
||||||
@@ -142,7 +142,7 @@ GEM
|
|||||||
google-cloud-core (~> 1.6)
|
google-cloud-core (~> 1.6)
|
||||||
googleauth (>= 0.16.2, < 2.a)
|
googleauth (>= 0.16.2, < 2.a)
|
||||||
mini_mime (~> 1.0)
|
mini_mime (~> 1.0)
|
||||||
googleauth (1.1.3)
|
googleauth (1.2.0)
|
||||||
faraday (>= 0.17.3, < 3.a)
|
faraday (>= 0.17.3, < 3.a)
|
||||||
jwt (>= 1.4, < 3.0)
|
jwt (>= 1.4, < 3.0)
|
||||||
memoist (~> 0.16)
|
memoist (~> 0.16)
|
||||||
@@ -150,12 +150,12 @@ GEM
|
|||||||
os (>= 0.9, < 2.0)
|
os (>= 0.9, < 2.0)
|
||||||
signet (>= 0.16, < 2.a)
|
signet (>= 0.16, < 2.a)
|
||||||
highline (2.0.3)
|
highline (2.0.3)
|
||||||
http-cookie (1.0.4)
|
http-cookie (1.0.5)
|
||||||
domain_name (~> 0.5)
|
domain_name (~> 0.5)
|
||||||
httpclient (2.8.3)
|
httpclient (2.8.3)
|
||||||
jmespath (1.6.1)
|
jmespath (1.6.1)
|
||||||
json (2.6.2)
|
json (2.6.2)
|
||||||
jwt (2.3.0)
|
jwt (2.4.1)
|
||||||
memoist (0.16.2)
|
memoist (0.16.2)
|
||||||
mini_magick (4.11.0)
|
mini_magick (4.11.0)
|
||||||
mini_mime (1.1.2)
|
mini_mime (1.1.2)
|
||||||
@@ -183,9 +183,9 @@ GEM
|
|||||||
ruby2_keywords (0.0.5)
|
ruby2_keywords (0.0.5)
|
||||||
rubyzip (2.3.2)
|
rubyzip (2.3.2)
|
||||||
security (0.1.3)
|
security (0.1.3)
|
||||||
signet (0.16.1)
|
signet (0.17.0)
|
||||||
addressable (~> 2.8)
|
addressable (~> 2.8)
|
||||||
faraday (>= 0.17.5, < 3.0)
|
faraday (>= 0.17.5, < 3.a)
|
||||||
jwt (>= 1.5, < 3.0)
|
jwt (>= 1.5, < 3.0)
|
||||||
multi_json (~> 1.10)
|
multi_json (~> 1.10)
|
||||||
simctl (1.6.8)
|
simctl (1.6.8)
|
||||||
@@ -203,11 +203,11 @@ GEM
|
|||||||
uber (0.1.0)
|
uber (0.1.0)
|
||||||
unf (0.1.4)
|
unf (0.1.4)
|
||||||
unf_ext
|
unf_ext
|
||||||
unf_ext (0.0.8.1)
|
unf_ext (0.0.8.2)
|
||||||
unicode-display_width (1.8.0)
|
unicode-display_width (1.8.0)
|
||||||
webrick (1.7.0)
|
webrick (1.7.0)
|
||||||
word_wrap (1.0.0)
|
word_wrap (1.0.0)
|
||||||
xcodeproj (1.21.0)
|
xcodeproj (1.22.0)
|
||||||
CFPropertyList (>= 2.3.3, < 4.0)
|
CFPropertyList (>= 2.3.3, < 4.0)
|
||||||
atomos (~> 0.1.3)
|
atomos (~> 0.1.3)
|
||||||
claide (>= 1.0.2, < 2.0)
|
claide (>= 1.0.2, < 2.0)
|
||||||
|
|||||||
@@ -911,7 +911,7 @@
|
|||||||
CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
CURRENT_PROJECT_VERSION = 404;
|
CURRENT_PROJECT_VERSION = 410;
|
||||||
DEAD_CODE_STRIPPING = NO;
|
DEAD_CODE_STRIPPING = NO;
|
||||||
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
@@ -953,7 +953,7 @@
|
|||||||
CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
CURRENT_PROJECT_VERSION = 404;
|
CURRENT_PROJECT_VERSION = 410;
|
||||||
DEAD_CODE_STRIPPING = NO;
|
DEAD_CODE_STRIPPING = NO;
|
||||||
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.53.0</string>
|
<string>1.54.0</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleURLTypes</key>
|
<key>CFBundleURLTypes</key>
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>404</string>
|
<string>410</string>
|
||||||
<key>ITSAppUsesNonExemptEncryption</key>
|
<key>ITSAppUsesNonExemptEncryption</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
|
|||||||
@@ -19,9 +19,9 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>XPC!</string>
|
<string>XPC!</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.53.0</string>
|
<string>1.54.0</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>404</string>
|
<string>410</string>
|
||||||
<key>NSAppTransportSecurity</key>
|
<key>NSAppTransportSecurity</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>NSAllowsArbitraryLoads</key>
|
<key>NSAllowsArbitraryLoads</key>
|
||||||
|
|||||||
@@ -19,9 +19,9 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>XPC!</string>
|
<string>XPC!</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.53.0</string>
|
<string>1.54.0</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>404</string>
|
<string>410</string>
|
||||||
<key>NSExtension</key>
|
<key>NSExtension</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>NSExtensionPointIdentifier</key>
|
<key>NSExtensionPointIdentifier</key>
|
||||||
|
|||||||
2
package-lock.json
generated
2
package-lock.json
generated
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "mattermost-mobile",
|
"name": "mattermost-mobile",
|
||||||
"version": "1.53.0",
|
"version": "1.54.0",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "mattermost-mobile",
|
"name": "mattermost-mobile",
|
||||||
"version": "1.53.0",
|
"version": "1.54.0",
|
||||||
"description": "Mattermost Mobile with React Native",
|
"description": "Mattermost Mobile with React Native",
|
||||||
"repository": "git@github.com:mattermost/mattermost-mobile.git",
|
"repository": "git@github.com:mattermost/mattermost-mobile.git",
|
||||||
"author": "Mattermost, Inc.",
|
"author": "Mattermost, Inc.",
|
||||||
|
|||||||
2
types/modules/react-native-webrtc.d.ts
vendored
2
types/modules/react-native-webrtc.d.ts
vendored
@@ -168,7 +168,7 @@ declare module 'react-native-webrtc' {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface RTCPeerConnectionConfiguration {
|
export interface RTCPeerConnectionConfiguration {
|
||||||
iceServers: ConfigurationParamWithUrls[] | ConfigurationParamWithUrl[];
|
iceServers: Array<ConfigurationParamWithUrls | ConfigurationParamWithUrl>;
|
||||||
iceTransportPolicy?: 'all' | 'relay' | 'nohost' | 'none' | undefined;
|
iceTransportPolicy?: 'all' | 'relay' | 'nohost' | 'none' | undefined;
|
||||||
bundlePolicy?: 'balanced' | 'max-compat' | 'max-bundle' | undefined;
|
bundlePolicy?: 'balanced' | 'max-compat' | 'max-bundle' | undefined;
|
||||||
rtcpMuxPolicy?: 'negotiate' | 'require' | undefined;
|
rtcpMuxPolicy?: 'negotiate' | 'require' | undefined;
|
||||||
|
|||||||
Reference in New Issue
Block a user