diff --git a/README.md b/README.md index e89b9d6..0eeb9c9 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ To set default Homeserver on login and register page, place a customized [`confi ## License -Copyright (c) 2021 Ajay Bura (ajbura) and other contributors +Copyright (c) 2021 Ajay Bura (ajbura) and contributors Code licensed under the MIT License: diff --git a/src/app/organisms/room/RoomViewContent.jsx b/src/app/organisms/room/RoomViewContent.jsx index d69a90e..f61a173 100644 --- a/src/app/organisms/room/RoomViewContent.jsx +++ b/src/app/organisms/room/RoomViewContent.jsx @@ -8,7 +8,7 @@ import dateFormat from 'dateformat'; import initMatrix from '../../../client/initMatrix'; import cons from '../../../client/state/cons'; import { redactEvent, sendReaction } from '../../../client/action/roomTimeline'; -import { getUsername, getUsernameOfRoomMember, doesRoomHaveUnread } from '../../../util/matrixUtil'; +import { getUsername, getUsernameOfRoomMember } from '../../../util/matrixUtil'; import colorMXID from '../../../util/colorMXID'; import { diffMinutes, isNotInSameDay, getEventCords } from '../../../util/common'; import { openEmojiBoard, openProfileViewer, openReadReceipts } from '../../../client/action/navigation'; @@ -191,6 +191,7 @@ function RoomViewContent({ const [onPagination, setOnPagination] = useState(null); const [editEvent, setEditEvent] = useState(null); const mx = initMatrix.matrixClient; + const noti = initMatrix.notifications; function autoLoadTimeline() { if (timelineScroll.isScrollable() === true) return; @@ -199,7 +200,7 @@ function RoomViewContent({ function trySendingReadReceipt() { const { room, timeline } = roomTimeline; if ( - (doesRoomHaveUnread(room) || initMatrix.notifications.hasNoti(roomId)) + (noti.doesRoomHaveUnread(room) || noti.hasNoti(roomId)) && timeline.length !== 0) { mx.sendReadReceipt(timeline[timeline.length - 1]); } diff --git a/src/app/templates/auth/Auth.jsx b/src/app/templates/auth/Auth.jsx index eae602c..9465a86 100644 --- a/src/app/templates/auth/Auth.jsx +++ b/src/app/templates/auth/Auth.jsx @@ -333,7 +333,7 @@ function Register({ registerInfo, loginFlow, baseUrl }) { }).catch((err) => { const msg = err.message || err.error; if (['M_USER_IN_USE', 'M_INVALID_USERNAME', 'M_EXCLUSIVE'].indexOf(err.errcode) > -1) { - actions.setErrors({ username: err.errCode === 'M_USER_IN_USE' ? 'Username is already taken' : msg }); + actions.setErrors({ username: err.errcode === 'M_USER_IN_USE' ? 'Username is already taken' : msg }); } else if (msg) actions.setErrors({ other: msg }); actions.setSubmitting(false); diff --git a/src/client/initMatrix.js b/src/client/initMatrix.js index 91a41ea..05f499c 100644 --- a/src/client/initMatrix.js +++ b/src/client/initMatrix.js @@ -31,6 +31,7 @@ class InitMatrix extends EventEmitter { sessionStore: new sdk.WebStorageSessionStore(global.localStorage), cryptoStore: new sdk.IndexedDBCryptoStore(global.indexedDB, 'crypto-store'), deviceId: secret.deviceId, + timelineSupport: true, }); await this.matrixClient.initCrypto(); diff --git a/src/index.scss b/src/index.scss index a4f1eaa..387b0cd 100644 --- a/src/index.scss +++ b/src/index.scss @@ -290,7 +290,12 @@ button { overflow: visible; -webkit-appearance: button; } -textarea, input[type="text"] { +textarea, +input, +input[type=text] +input[type=username] +input[type=password] +input[type=email] { -webkit-appearance: none; -moz-appearance: none; appearance: none; diff --git a/src/util/matrixUtil.js b/src/util/matrixUtil.js index e0b0710..6f33c46 100644 --- a/src/util/matrixUtil.js +++ b/src/util/matrixUtil.js @@ -48,30 +48,6 @@ async function isRoomAliasAvailable(alias) { } } -function doesRoomHaveUnread(room) { - const userId = initMatrix.matrixClient.getUserId(); - const readUpToId = room.getEventReadUpTo(userId); - const supportEvents = ['m.room.message', 'm.room.encrypted', 'm.sticker']; - - if (room.timeline.length - && room.timeline[room.timeline.length - 1].sender - && room.timeline[room.timeline.length - 1].sender.userId === userId - && room.timeline[room.timeline.length - 1].getType() !== 'm.room.member') { - return false; - } - - for (let i = room.timeline.length - 1; i >= 0; i -= 1) { - const event = room.timeline[i]; - - if (event.getId() === readUpToId) return false; - - if (supportEvents.includes(event.getType())) { - return true; - } - } - return true; -} - function getPowerLabel(powerLevel) { if (powerLevel > 9000) return 'Goku'; if (powerLevel > 100) return 'Founder'; @@ -82,5 +58,5 @@ function getPowerLabel(powerLevel) { export { getBaseUrl, getUsername, getUsernameOfRoomMember, - isRoomAliasAvailable, doesRoomHaveUnread, getPowerLabel, + isRoomAliasAvailable, getPowerLabel, };