diff --git a/.eslintignore.errorfiles b/.eslintignore.errorfiles
new file mode 100644
index 0000000000..f1b63d7367
--- /dev/null
+++ b/.eslintignore.errorfiles
@@ -0,0 +1,187 @@
+# autogenerated file: run scripts/generate-eslint-error-ignore-file to update.
+
+src/AddThreepid.js
+src/async-components/views/dialogs/EncryptedEventDialog.js
+src/autocomplete/AutocompleteProvider.js
+src/autocomplete/Autocompleter.js
+src/autocomplete/Components.js
+src/autocomplete/DuckDuckGoProvider.js
+src/autocomplete/EmojiProvider.js
+src/autocomplete/RoomProvider.js
+src/autocomplete/UserProvider.js
+src/Avatar.js
+src/BasePlatform.js
+src/CallHandler.js
+src/component-index.js
+src/components/structures/ContextualMenu.js
+src/components/structures/CreateRoom.js
+src/components/structures/FilePanel.js
+src/components/structures/InteractiveAuth.js
+src/components/structures/LoggedInView.js
+src/components/structures/login/ForgotPassword.js
+src/components/structures/login/Login.js
+src/components/structures/login/PostRegistration.js
+src/components/structures/login/Registration.js
+src/components/structures/MatrixChat.js
+src/components/structures/MessagePanel.js
+src/components/structures/NotificationPanel.js
+src/components/structures/RoomStatusBar.js
+src/components/structures/RoomView.js
+src/components/structures/ScrollPanel.js
+src/components/structures/TimelinePanel.js
+src/components/structures/UploadBar.js
+src/components/structures/UserSettings.js
+src/components/views/avatars/BaseAvatar.js
+src/components/views/avatars/MemberAvatar.js
+src/components/views/avatars/RoomAvatar.js
+src/components/views/create_room/CreateRoomButton.js
+src/components/views/create_room/Presets.js
+src/components/views/create_room/RoomAlias.js
+src/components/views/dialogs/ChatCreateOrReuseDialog.js
+src/components/views/dialogs/ChatInviteDialog.js
+src/components/views/dialogs/DeactivateAccountDialog.js
+src/components/views/dialogs/InteractiveAuthDialog.js
+src/components/views/dialogs/SetMxIdDialog.js
+src/components/views/dialogs/UnknownDeviceDialog.js
+src/components/views/elements/AccessibleButton.js
+src/components/views/elements/ActionButton.js
+src/components/views/elements/AddressSelector.js
+src/components/views/elements/AddressTile.js
+src/components/views/elements/CreateRoomButton.js
+src/components/views/elements/DeviceVerifyButtons.js
+src/components/views/elements/DirectorySearchBox.js
+src/components/views/elements/Dropdown.js
+src/components/views/elements/EditableText.js
+src/components/views/elements/EditableTextContainer.js
+src/components/views/elements/HomeButton.js
+src/components/views/elements/LanguageDropdown.js
+src/components/views/elements/MemberEventListSummary.js
+src/components/views/elements/PowerSelector.js
+src/components/views/elements/ProgressBar.js
+src/components/views/elements/RoomDirectoryButton.js
+src/components/views/elements/SettingsButton.js
+src/components/views/elements/StartChatButton.js
+src/components/views/elements/TintableSvg.js
+src/components/views/elements/TruncatedList.js
+src/components/views/elements/UserSelector.js
+src/components/views/login/CaptchaForm.js
+src/components/views/login/CasLogin.js
+src/components/views/login/CountryDropdown.js
+src/components/views/login/CustomServerDialog.js
+src/components/views/login/InteractiveAuthEntryComponents.js
+src/components/views/login/LoginHeader.js
+src/components/views/login/PasswordLogin.js
+src/components/views/login/RegistrationForm.js
+src/components/views/login/ServerConfig.js
+src/components/views/messages/MAudioBody.js
+src/components/views/messages/MessageEvent.js
+src/components/views/messages/MFileBody.js
+src/components/views/messages/MImageBody.js
+src/components/views/messages/MVideoBody.js
+src/components/views/messages/RoomAvatarEvent.js
+src/components/views/messages/TextualBody.js
+src/components/views/messages/TextualEvent.js
+src/components/views/room_settings/AliasSettings.js
+src/components/views/room_settings/ColorSettings.js
+src/components/views/room_settings/UrlPreviewSettings.js
+src/components/views/rooms/Autocomplete.js
+src/components/views/rooms/AuxPanel.js
+src/components/views/rooms/EntityTile.js
+src/components/views/rooms/EventTile.js
+src/components/views/rooms/LinkPreviewWidget.js
+src/components/views/rooms/MemberDeviceInfo.js
+src/components/views/rooms/MemberInfo.js
+src/components/views/rooms/MemberList.js
+src/components/views/rooms/MemberTile.js
+src/components/views/rooms/MessageComposer.js
+src/components/views/rooms/MessageComposerInput.js
+src/components/views/rooms/MessageComposerInputOld.js
+src/components/views/rooms/PresenceLabel.js
+src/components/views/rooms/ReadReceiptMarker.js
+src/components/views/rooms/RoomHeader.js
+src/components/views/rooms/RoomList.js
+src/components/views/rooms/RoomNameEditor.js
+src/components/views/rooms/RoomPreviewBar.js
+src/components/views/rooms/RoomSettings.js
+src/components/views/rooms/RoomTile.js
+src/components/views/rooms/RoomTopicEditor.js
+src/components/views/rooms/SearchableEntityList.js
+src/components/views/rooms/SearchResultTile.js
+src/components/views/rooms/TabCompleteBar.js
+src/components/views/rooms/TopUnreadMessagesBar.js
+src/components/views/rooms/UserTile.js
+src/components/views/settings/AddPhoneNumber.js
+src/components/views/settings/ChangeAvatar.js
+src/components/views/settings/ChangeDisplayName.js
+src/components/views/settings/ChangePassword.js
+src/components/views/settings/DevicesPanel.js
+src/components/views/settings/DevicesPanelEntry.js
+src/components/views/settings/EnableNotificationsButton.js
+src/components/views/voip/CallView.js
+src/components/views/voip/IncomingCallBox.js
+src/components/views/voip/VideoFeed.js
+src/components/views/voip/VideoView.js
+src/ContentMessages.js
+src/createRoom.js
+src/DateUtils.js
+src/email.js
+src/Entities.js
+src/extend.js
+src/HtmlUtils.js
+src/ImageUtils.js
+src/Invite.js
+src/languageHandler.js
+src/linkify-matrix.js
+src/Login.js
+src/Markdown.js
+src/MatrixClientPeg.js
+src/Modal.js
+src/Notifier.js
+src/ObjectUtils.js
+src/PasswordReset.js
+src/PlatformPeg.js
+src/Presence.js
+src/ratelimitedfunc.js
+src/Resend.js
+src/RichText.js
+src/Roles.js
+src/RoomListSorter.js
+src/RoomNotifs.js
+src/Rooms.js
+src/RtsClient.js
+src/ScalarAuthClient.js
+src/ScalarMessaging.js
+src/SdkConfig.js
+src/Skinner.js
+src/SlashCommands.js
+src/stores/LifecycleStore.js
+src/TabComplete.js
+src/TabCompleteEntries.js
+src/TextForEvent.js
+src/Tinter.js
+src/UiEffects.js
+src/Unread.js
+src/UserActivity.js
+src/utils/DecryptFile.js
+src/utils/DMRoomMap.js
+src/utils/FormattingUtils.js
+src/utils/MultiInviter.js
+src/utils/Receipt.js
+src/Velociraptor.js
+src/VelocityBounce.js
+src/WhoIsTyping.js
+src/wrappers/WithMatrixClient.js
+test/all-tests.js
+test/components/structures/login/Registration-test.js
+test/components/structures/MessagePanel-test.js
+test/components/structures/ScrollPanel-test.js
+test/components/structures/TimelinePanel-test.js
+test/components/stub-component.js
+test/components/views/dialogs/InteractiveAuthDialog-test.js
+test/components/views/elements/MemberEventListSummary-test.js
+test/components/views/login/RegistrationForm-test.js
+test/components/views/rooms/MessageComposerInput-test.js
+test/mock-clock.js
+test/skinned-sdk.js
+test/stores/RoomViewStore-test.js
+test/test-utils.js
diff --git a/.gitignore b/.gitignore
index b99c9f1145..f828c37393 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,3 +12,5 @@ npm-debug.log
/.idea
/src/component-index.js
+
+.DS_Store
diff --git a/.travis.yml b/.travis.yml
index a405b9ef35..918cec696b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,6 +5,4 @@ install:
- npm install
- (cd node_modules/matrix-js-sdk && npm install)
script:
- # don't run the riot tests unless the react-sdk tests pass, otherwise
- # the output is confusing.
- - npm run test && ./.travis-test-riot.sh
+ ./scripts/travis.sh
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 66e4627afd..16eeca8fa7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,167 @@
+Changes in [0.9.3](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.9.3) (2017-06-12)
+===================================================================================================
+[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.9.3-rc.2...v0.9.3)
+
+ * Add more translations & fix some existing ones
+
+Changes in [0.9.3-rc.2](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.9.3-rc.2) (2017-06-09)
+=============================================================================================================
+[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.9.3-rc.1...v0.9.3-rc.2)
+
+ * Fix flux dependency
+ * Fix translations on conference call bar
+
+Changes in [0.9.3-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.9.3-rc.1) (2017-06-09)
+=============================================================================================================
+[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.9.2...v0.9.3-rc.1)
+
+ * When ChatCreateOrReuseDialog is cancelled by a guest, go home
+ [\#1069](https://github.com/matrix-org/matrix-react-sdk/pull/1069)
+ * Update from Weblate.
+ [\#1065](https://github.com/matrix-org/matrix-react-sdk/pull/1065)
+ * Goto /home when forgetting the last room
+ [\#1067](https://github.com/matrix-org/matrix-react-sdk/pull/1067)
+ * Default to home page when settings is closed
+ [\#1066](https://github.com/matrix-org/matrix-react-sdk/pull/1066)
+ * Update from Weblate.
+ [\#1063](https://github.com/matrix-org/matrix-react-sdk/pull/1063)
+ * When joining, use a roomAlias if we have it
+ [\#1062](https://github.com/matrix-org/matrix-react-sdk/pull/1062)
+ * Control currently viewed event via RoomViewStore
+ [\#1058](https://github.com/matrix-org/matrix-react-sdk/pull/1058)
+ * Better error messages for login
+ [\#1060](https://github.com/matrix-org/matrix-react-sdk/pull/1060)
+ * Add remaining translations
+ [\#1056](https://github.com/matrix-org/matrix-react-sdk/pull/1056)
+ * Added button that copies code to clipboard
+ [\#1040](https://github.com/matrix-org/matrix-react-sdk/pull/1040)
+ * de-lint MegolmExportEncryption + test
+ [\#1059](https://github.com/matrix-org/matrix-react-sdk/pull/1059)
+ * Better RTL support
+ [\#1021](https://github.com/matrix-org/matrix-react-sdk/pull/1021)
+ * make mels emoji capable
+ [\#1057](https://github.com/matrix-org/matrix-react-sdk/pull/1057)
+ * Make travis check for lint on files which are clean to start with
+ [\#1055](https://github.com/matrix-org/matrix-react-sdk/pull/1055)
+ * Update from Weblate.
+ [\#1053](https://github.com/matrix-org/matrix-react-sdk/pull/1053)
+ * Add some logging around switching rooms
+ [\#1054](https://github.com/matrix-org/matrix-react-sdk/pull/1054)
+ * Update from Weblate.
+ [\#1052](https://github.com/matrix-org/matrix-react-sdk/pull/1052)
+ * Use user_directory endpoint to populate ChatInviteDialog
+ [\#1050](https://github.com/matrix-org/matrix-react-sdk/pull/1050)
+ * Various Analytics changes/fixes/improvements
+ [\#1046](https://github.com/matrix-org/matrix-react-sdk/pull/1046)
+ * Use an arrow function to allow `this`
+ [\#1051](https://github.com/matrix-org/matrix-react-sdk/pull/1051)
+ * New guest access
+ [\#937](https://github.com/matrix-org/matrix-react-sdk/pull/937)
+ * Translate src/components/structures
+ [\#1048](https://github.com/matrix-org/matrix-react-sdk/pull/1048)
+ * Cancel 'join room' action if 'log in' is clicked
+ [\#1049](https://github.com/matrix-org/matrix-react-sdk/pull/1049)
+ * fix copy and paste derp and rip out unused imports
+ [\#1015](https://github.com/matrix-org/matrix-react-sdk/pull/1015)
+ * Update from Weblate.
+ [\#1042](https://github.com/matrix-org/matrix-react-sdk/pull/1042)
+ * Reset 'first sync' flag / promise on log in
+ [\#1041](https://github.com/matrix-org/matrix-react-sdk/pull/1041)
+ * Remove DM-guessing code (again)
+ [\#1036](https://github.com/matrix-org/matrix-react-sdk/pull/1036)
+ * Cancel deferred actions
+ [\#1039](https://github.com/matrix-org/matrix-react-sdk/pull/1039)
+ * Merge develop, add i18n for SetMxIdDialog
+ [\#1034](https://github.com/matrix-org/matrix-react-sdk/pull/1034)
+ * Defer an intention for creating a room
+ [\#1038](https://github.com/matrix-org/matrix-react-sdk/pull/1038)
+ * Fix 'create room' button
+ [\#1037](https://github.com/matrix-org/matrix-react-sdk/pull/1037)
+ * Always show the spinner during the first sync
+ [\#1033](https://github.com/matrix-org/matrix-react-sdk/pull/1033)
+ * Only view welcome user if we are not looking at a room
+ [\#1032](https://github.com/matrix-org/matrix-react-sdk/pull/1032)
+ * Update from Weblate.
+ [\#1030](https://github.com/matrix-org/matrix-react-sdk/pull/1030)
+ * Keep deferred actions for view_user_settings and view_create_chat
+ [\#1031](https://github.com/matrix-org/matrix-react-sdk/pull/1031)
+ * Don't do a deferred start chat if user is welcome user
+ [\#1029](https://github.com/matrix-org/matrix-react-sdk/pull/1029)
+ * Introduce state `peekLoading` to avoid collision with `roomLoading`
+ [\#1028](https://github.com/matrix-org/matrix-react-sdk/pull/1028)
+ * Update from Weblate.
+ [\#1016](https://github.com/matrix-org/matrix-react-sdk/pull/1016)
+ * Fix accepting a 3pid invite
+ [\#1013](https://github.com/matrix-org/matrix-react-sdk/pull/1013)
+ * Propagate room join errors to the UI
+ [\#1007](https://github.com/matrix-org/matrix-react-sdk/pull/1007)
+ * Implement /user/@userid:domain?action=chat
+ [\#1006](https://github.com/matrix-org/matrix-react-sdk/pull/1006)
+ * Show People/Rooms emptySubListTip even when total rooms !== 0
+ [\#967](https://github.com/matrix-org/matrix-react-sdk/pull/967)
+ * Fix to show the correct room
+ [\#995](https://github.com/matrix-org/matrix-react-sdk/pull/995)
+ * Remove cachedPassword from localStorage on_logged_out
+ [\#977](https://github.com/matrix-org/matrix-react-sdk/pull/977)
+ * Add /start to show the setMxId above HomePage
+ [\#964](https://github.com/matrix-org/matrix-react-sdk/pull/964)
+ * Allow pressing Enter to submit setMxId
+ [\#961](https://github.com/matrix-org/matrix-react-sdk/pull/961)
+ * add login link to SetMxIdDialog
+ [\#954](https://github.com/matrix-org/matrix-react-sdk/pull/954)
+ * Block user settings with view_set_mxid
+ [\#936](https://github.com/matrix-org/matrix-react-sdk/pull/936)
+ * Show "Something went wrong!" when errcode undefined
+ [\#935](https://github.com/matrix-org/matrix-react-sdk/pull/935)
+ * Reset store state when logging out
+ [\#930](https://github.com/matrix-org/matrix-react-sdk/pull/930)
+ * Set the displayname to the mxid once PWLU
+ [\#933](https://github.com/matrix-org/matrix-react-sdk/pull/933)
+ * Fix view_next_room, view_previous_room and view_indexed_room
+ [\#929](https://github.com/matrix-org/matrix-react-sdk/pull/929)
+ * Use RVS to indicate "joining" when setting a mxid
+ [\#928](https://github.com/matrix-org/matrix-react-sdk/pull/928)
+ * Don't show notif nag bar if guest
+ [\#932](https://github.com/matrix-org/matrix-react-sdk/pull/932)
+ * Show "Password" instead of "New Password"
+ [\#927](https://github.com/matrix-org/matrix-react-sdk/pull/927)
+ * Remove warm-fuzzy after setting mxid
+ [\#926](https://github.com/matrix-org/matrix-react-sdk/pull/926)
+ * Allow teamServerConfig to be missing
+ [\#925](https://github.com/matrix-org/matrix-react-sdk/pull/925)
+ * Remove GuestWarningBar
+ [\#923](https://github.com/matrix-org/matrix-react-sdk/pull/923)
+ * Make left panel better for new users (mk III)
+ [\#924](https://github.com/matrix-org/matrix-react-sdk/pull/924)
+ * Implement default welcome page and allow custom URL /w config
+ [\#922](https://github.com/matrix-org/matrix-react-sdk/pull/922)
+ * Implement a store for RoomView
+ [\#921](https://github.com/matrix-org/matrix-react-sdk/pull/921)
+ * Add prop to toggle whether new password input is autoFocused
+ [\#915](https://github.com/matrix-org/matrix-react-sdk/pull/915)
+ * Implement warm-fuzzy success dialog for SetMxIdDialog
+ [\#905](https://github.com/matrix-org/matrix-react-sdk/pull/905)
+ * Write some tests for the RTS UI
+ [\#893](https://github.com/matrix-org/matrix-react-sdk/pull/893)
+ * Make confirmation optional on ChangePassword
+ [\#890](https://github.com/matrix-org/matrix-react-sdk/pull/890)
+ * Remove "Current Password" input if mx_pass exists
+ [\#881](https://github.com/matrix-org/matrix-react-sdk/pull/881)
+ * Replace NeedToRegisterDialog /w SetMxIdDialog
+ [\#889](https://github.com/matrix-org/matrix-react-sdk/pull/889)
+ * Invite the welcome user after registration if configured
+ [\#882](https://github.com/matrix-org/matrix-react-sdk/pull/882)
+ * Prevent ROUs from creating new chats/new rooms
+ [\#879](https://github.com/matrix-org/matrix-react-sdk/pull/879)
+ * Redesign mxID chooser, add availability checking
+ [\#877](https://github.com/matrix-org/matrix-react-sdk/pull/877)
+ * Show password nag bar when user is PWLU
+ [\#864](https://github.com/matrix-org/matrix-react-sdk/pull/864)
+ * fix typo
+ [\#858](https://github.com/matrix-org/matrix-react-sdk/pull/858)
+ * Initial implementation: SetDisplayName -> SetMxIdDialog
+ [\#849](https://github.com/matrix-org/matrix-react-sdk/pull/849)
+
Changes in [0.9.2](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.9.2) (2017-06-06)
===================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.9.1...v0.9.2)
diff --git a/jenkins.sh b/jenkins.sh
index 6a77911c27..d9bb62855b 100755
--- a/jenkins.sh
+++ b/jenkins.sh
@@ -21,6 +21,11 @@ npm run test
# run eslint
npm run lintall -- -f checkstyle -o eslint.xml || true
+# re-run the linter, excluding any files known to have errors or warnings.
+./node_modules/.bin/eslint --max-warnings 0 \
+ --ignore-path .eslintignore.errorfiles \
+ src test
+
# delete the old tarball, if it exists
rm -f matrix-react-sdk-*.tgz
diff --git a/package.json b/package.json
index e4f7d82984..12a17900be 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "matrix-react-sdk",
- "version": "0.9.2",
+ "version": "0.9.3",
"description": "SDK for matrix.org using React",
"author": "matrix.org",
"repository": {
@@ -57,15 +57,16 @@
"emojione": "2.2.3",
"file-saver": "^1.3.3",
"filesize": "3.5.6",
- "flux": "^2.0.3",
+ "flux": "2.1.1",
"fuse.js": "^2.2.0",
"glob": "^5.0.14",
"highlight.js": "^8.9.1",
"isomorphic-fetch": "^2.2.1",
"linkifyjs": "^2.1.3",
"lodash": "^4.13.1",
- "matrix-js-sdk": "0.7.10",
+ "matrix-js-sdk": "0.7.11",
"optimist": "^0.6.1",
+ "prop-types": "^15.5.8",
"q": "^1.4.1",
"react": "^15.4.0",
"react-addons-css-transition-group": "15.3.2",
diff --git a/scripts/fix-i18n.pl b/scripts/fix-i18n.pl
index 247b2b663f..def352463d 100755
--- a/scripts/fix-i18n.pl
+++ b/scripts/fix-i18n.pl
@@ -61,6 +61,16 @@ You are already in a call.
You cannot place VoIP calls in this browser.
You cannot place a call with yourself.
Your email address does not appear to be associated with a Matrix ID on this Homeserver.
+Guest users can't upload files. Please register to upload.
+Some of your messages have not been sent.
+This room is private or inaccessible to guests. You may be able to join if you register.
+Tried to load a specific point in this room's timeline, but was unable to find it.
+Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.
+This action cannot be performed by a guest user. Please register to be able to do this.
+Tried to load a specific point in this room's timeline, but was unable to find it.
+Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.
+You are trying to access %(roomName)s.
+You will not be able to undo this change as you are promoting the user to have the same power level as yourself.
EOT
)];
}
@@ -84,7 +94,7 @@ if ($_ =~ m/^(\s+)"(.*?)"(: *)"(.*?)"(,?)$/) {
$sub = 1;
}
- if ($src eq $fixup && $dst !~ /\.$/) {
+ if ($ARGV !~ /(zh_Hans|zh_Hant|th)\.json$/ && $src eq $fixup && $dst !~ /\.$/) {
print STDERR "fixing up dst: $dst\n";
$dst .= '.';
$sub = 1;
diff --git a/scripts/generate-eslint-error-ignore-file b/scripts/generate-eslint-error-ignore-file
new file mode 100755
index 0000000000..3a635f5a7d
--- /dev/null
+++ b/scripts/generate-eslint-error-ignore-file
@@ -0,0 +1,21 @@
+#!/bin/sh
+#
+# generates .eslintignore.errorfiles to list the files which have errors in,
+# so that they can be ignored in future automated linting.
+
+out=.eslintignore.errorfiles
+
+cd `dirname $0`/..
+
+echo "generating $out"
+
+{
+ cat <
@@ -130,7 +130,7 @@ export default React.createClass({ 'careful to keep it secure. To help with this, you should enter ' + 'a passphrase below, which will be used to encrypt the exported ' + 'data. It will only be possible to import the data by using the ' + - 'same passphrase.' + 'same passphrase.', ) }
{ _t( 'The export file will be protected with a passphrase. ' + - 'You should enter the passphrase here, to decrypt the file.' + 'You should enter the passphrase here, to decrypt the file.', ) }