Commit graph

402 commits

Author SHA1 Message Date
Konstantinos Sideris
020f153f1f Fix crash when trying to use automatically deleted ImageOverlay dialog 2018-02-20 22:08:16 +02:00
Konstantinos Sideris
f95998a64b Be explicit about the captured parameters in lambdas 2018-02-20 17:09:11 +02:00
Konstantinos Sideris
127c52e39a Scale down the preview image to fit in the application window
On macOS the modal has some extra space around the main content
that might make it unusable with a big enough image.
2018-02-19 23:33:11 +02:00
Konstantinos Sideris
1764bacd4b Move scaleImage() in Utils 2018-02-19 23:32:37 +02:00
Konstantinos Sideris
8b139c32a3 Minor adjustments 2018-02-19 22:09:21 +02:00
Konstantinos Sideris
a8e17b9c91 Notify the user on upload failures 2018-02-19 00:17:54 +02:00
christarazi
cd9d1a2ec6 Support audio, video, generic file for pasting (#220)
* Refactor widget items to use same interface

* Support audio, video, generic file for pasting

* Add utils function for human readable file sizes

* Set correct MIME type for media messages

This change also determines the size of the upload once from the
ContentLengthHeader, rather than seeking the QIODevice and asking for
its size. This prevents any future trouble in case the QIODevice is
sequential (cannot be seeked). The MIME type is also determined at
upload once, rather than using the QIODevice and the underlying data
inside.

* Allow for file urls to be used as fall-back

This fixes an issue on macOS which uses `text/uri-list` for copying
files to the clipboard.

fixes #228
2018-02-18 22:52:31 +02:00
Konstantinos Sideris
c8bfb02211 Show loading indicator while waiting for /login & /logout
fixes #208
2018-02-18 22:22:26 +02:00
Konstantinos Sideris
7e2f835eec Properly detect the start of the timeline
We can't rely solely on the number of the returned messages
because it could be zero if all the event types are unknown.

fixes #168
2018-02-17 19:29:53 +02:00
Konstantinos Sideris
fdd5051dcf Remove QPropertyAnimation from modals to work around a regression on Qt 5.10.1 (#87) 2018-02-17 18:43:40 +02:00
Konstantinos Sideris
59e4148a7c Fix transparency issue on custom dialogs
fixes #87
2018-02-17 14:04:46 +02:00
Konstantinos Sideris
8d867f418d Hide emoji picker when the app loses focus
fixes #184
fixes #209
2018-02-16 19:02:15 +02:00
Konstantinos Sideris
86280098b4 Implement server-side notification count 2018-02-15 21:58:57 +02:00
Konstantinos Sideris
6d08e67abd Simplify variant access with std::visit 2018-02-11 19:30:22 +02:00
William Pitcock
0be787f1e4 RoomList: do not blindly dereference RoomState (#232)
This can happen when a new room is being created from a different client and thus is created
with no known state to the local client.
2018-02-11 14:39:06 +02:00
Konstantinos Sideris
ba8faa357f Remove empty destructors 2018-02-10 16:29:09 +02:00
Konstantinos Sideris
26f221ec23 Move LeaveRoom dialog to MainWindow (#87) 2018-02-10 16:05:31 +02:00
Konstantinos Sideris
ddcc0f7f60 Generate a date separator before local messages 2018-02-10 01:09:30 +02:00
Konstantinos Sideris
da6b816228 Remove tone emoji 2018-02-09 12:20:09 +02:00
Konstantinos Sideris
b60554b8fd Add a timeout timer for initial sync (#223, #222)
Show a better message on the login screen after an initial sync failure.
2018-02-08 19:07:58 +02:00
Chris Tarazi
31eb0a9c88
Create new font for checkmark 2018-02-07 21:32:22 -08:00
Chris Tarazi
2dcc01633e
Apply fixed width for checkmark for all messages 2018-02-07 21:32:21 -08:00
Chris Tarazi
a15079c68f
Fix #217: create space for checkmark beforehand 2018-02-07 21:32:20 -08:00
Konstantinos Sideris
43ba4d5ed5 Handle case with no available rooms
fixes #181
2018-02-02 10:51:07 -07:00
Konstantinos Sideris
96e99710fc Second attempt to fix failback text size for ImageItem 2018-01-31 09:27:34 -07:00
Konstantinos Sideris
117a739bc4 Add enough space for the failback text in ImageItem 2018-01-30 15:30:25 -07:00
Konstantinos Sideris
07a4e38ed8 Increase pagination retry timeout 2018-01-30 13:40:48 -07:00
Konstantinos Sideris
b1f232bf86 Render messages received by /messages on demand 2018-01-30 12:56:01 -07:00
Konstantinos Sideris
992332adf7 Update user avatars in place 2018-01-30 11:39:06 -07:00
Konstantinos Sideris
597f829c57 Remove '#' from the room avatars 2018-01-25 18:10:05 +02:00
Konstantinos Sideris
67418e11b1 Add missing processEvents call 2018-01-25 17:18:37 +02:00
Konstantinos Sideris
2cf3161bff Call processEvents while rendering new events 2018-01-25 16:49:31 +02:00
Konstantinos Sideris
0e91dae922 Erase items using the key 2018-01-25 14:34:15 +02:00
Konstantinos Sideris
936e215aed Resize text input vertically to fit the contents 2018-01-25 07:57:19 +02:00
Konstantinos Sideris
1fad9398fc Use more stl containers & minor refactorings 2018-01-24 20:46:37 +02:00
Konstantinos Sideris
9eedcd700a Remove trailing whitespace from text messages
fixes #216
2018-01-23 18:14:13 +02:00
Konstantinos Sideris
2274642f12 Show the scroll-down button when showing the timeline 2018-01-23 17:34:57 +02:00
Konstantinos Sideris
48dabdfdc7 Don't dismiss the loading overlay by clicking 2018-01-22 16:47:08 +02:00
Konstantinos Sideris
72cba5d9eb Disable minimize to tray except for the ChatPage 2018-01-22 16:33:47 +02:00
Konstantinos Sideris
4098cf6780 Fix ci 2018-01-22 14:52:54 +02:00
Konstantinos Sideris
64dd4c5985 Remove Accept-Encoding header 2018-01-22 12:02:07 +02:00
Konstantinos Sideris
c59cd0e80b Load the initial cache data without blocking the UI 2018-01-21 21:43:21 +02:00
Konstantinos Sideris
c123bada94 Refactor avatar fetching in one function 2018-01-21 20:28:38 +02:00
Konstantinos Sideris
fc890f572c Fix iterator crash 2018-01-21 18:25:58 +02:00
Konstantinos Sideris
e37c2e34ce Use the Accept-Content header to enable response compression
fixes #86
fixes #89
2018-01-21 15:12:21 +02:00
Konstantinos Sideris
92a578f5e8 Convert 'if' to 'else if' to remove a no-op 2018-01-17 10:16:54 +02:00
Konstantinos Sideris
9de2db2fb8 Automatically focus on input when opening a dialog 2018-01-16 22:50:47 +02:00
Konstantinos Sideris
eea33062e3 Add some very useful commands 2018-01-16 22:34:31 +02:00
Konstantinos Sideris
26540bd120 Hack to work around layout flickering when adding new timeline items 2018-01-16 22:24:23 +02:00
Konstantinos Sideris
7792ca7149 Fix emoji as avatars issue for the receipts 2018-01-16 21:02:29 +02:00
Konstantinos Sideris
caf5b70994 Move the cursor to the start/end of the text before we move up/down in history
fixes #166
2018-01-16 20:51:46 +02:00
Konstantinos Sideris
af5663b6bc Add borders 2018-01-15 21:04:49 +02:00
Konstantinos Sideris
020a842aef Change cache format to not allow duplicate receipts
Convert list of receipts to map<userId, timestamp>
2018-01-14 23:37:38 +02:00
Konstantinos Sideris
4521837765 Add option to disable typing notifications
fixes #131
2018-01-14 15:57:58 +02:00
Konstantinos Sideris
c4fa8c844d Add a checkmark to messages that have been received by the server (#93) 2018-01-14 12:54:17 +02:00
Konstantinos Sideris
dfeb0c833a Move timestamps to the right 2018-01-14 12:29:54 +02:00
Konstantinos Sideris
d31a08f1d5 Keep syncing regardless of connectivity (#93) 2018-01-13 22:25:15 +02:00
Konstantinos Sideris
d3603606e7 Make some functions inline 2018-01-13 17:52:23 +02:00
Konstantinos Sideris
3929261a8e Use QSharedPointer to save RoomStates 2018-01-13 17:15:47 +02:00
krombel
f87b8fe817 Upload filter automatically and use filter_id (#201)
When a custom filter is inserted into nheko.conf or there was no filter
defined yet the default filter gets automatically uploaded.
After a successful upload the server-side generated filter-id is used.

This is done async as it is just an enhancement and it is not required
to upload the filter before the first request.
2018-01-13 14:49:51 +02:00
Konstantinos Sideris
daabb40bed Use Q_NULLPTR to be compatible with qt5.7
fixes #199
2018-01-12 11:27:24 +02:00
Konstantinos Sideris
5b09c8e652 Handle surrogate pairs in avatars 2018-01-12 10:21:53 +02:00
Konstantinos Sideris
8beef5e61f Dismiss modal by clicking on the overlay 2018-01-11 18:10:18 +02:00
Konstantinos Sideris
9521efab7e Lint
[ci skip]
2018-01-11 16:34:43 +02:00
krombel
0570135253 Filter out content in sync that is currently unhandled (#198)
I had a look at sync.cpp and checked which parts of the sync response
are currently handled and which not. As I think it is unnecessary to let the 
unhandled data be transmitted without being handled I added these filters.

In the same term I increased the timeout server-side to 30s as Riot
defaults to this value as well. Especially now when a lots of presence-updates 
are not send anymore this value is more relevant.

It is now also possible to use a filter that is defined in`client/sync_filter`.
Advanced users might want to set an own filter here.

[ci skip]
2018-01-11 16:33:50 +02:00
Konstantinos Sideris
82341247f7 Remove Connection header 2018-01-10 23:38:34 +02:00
christarazi
ddfce136ed Add support for pasting images into a room (#180)
fixes #132
2018-01-10 09:52:59 +02:00
Konstantinos Sideris
53f670096c Make group's sidebar visible through an option 2018-01-09 21:57:41 +02:00
Max Sandholm
312df6f3bb Communities (#195) 2018-01-09 15:07:32 +02:00
Konstantinos Sideris
81a706bf20 Make usernames in timeline less bold 2018-01-08 11:27:37 +02:00
Konstantinos Sideris
953634c9b5 Enable read receipts on messages sent through nheko 2018-01-05 15:28:38 +02:00
Konstantinos Sideris
983aea7c76 Create widgets on demand for messages added to the end of the timeline 2018-01-05 00:27:32 +02:00
Konstantinos Sideris
a7e84b63ac Remove an extra colon from the receipt time
[ci skip]
2018-01-04 10:52:49 +02:00
Konstantinos Sideris
eaf05748ff Initial support for read receipts 2018-01-03 18:06:29 +02:00
Konstantinos Sideris
f7003ddeb5 Load last content from all rooms
fixes #175
2017-12-30 18:16:11 +02:00
Konstantinos Sideris
5e0fbe87a0 Use toMSecsSinceEpoch to be compatible with qt < 5.8 2017-12-30 17:44:47 +02:00
Konstantinos Sideris
208f957911 Re-order room list based on activity
fixes #2
2017-12-30 17:29:57 +02:00
Konstantinos Sideris
d1d8b92b37 Use qobject_cast on TimelineItem 2017-12-30 11:59:55 +02:00
Konstantinos Sideris
1ab55d4732 Add date separator in the timeline
fixes #157
2017-12-25 23:02:33 +02:00
Konstantinos Sideris
6835a97b15 Use a better regex to identify URLs 2017-12-24 13:13:07 +02:00
Konstantinos Sideris
e57f5f848b Restrict display name width to 500px 2017-12-23 14:06:59 +02:00
Konstantinos Sideris
9d763c4de9 Don't keep fetching history on non-visible timelines
If the user switched to another timeline before the current timeline
filled up with messages, nheko would keep fetching history.

Now it will check periodically if the timeline became visible so
it can decide whether or not to stop fetching history.
2017-12-23 13:50:11 +02:00
Konstantinos Sideris
de61663e42 Use the "state_key" to assign avatars
fixes #113
fixes #173
2017-12-22 16:02:08 +02:00
Konstantinos Sideris
33f534c6f8 Cache room avatars (#139)
fixes #107
2017-12-22 00:00:48 +02:00
Konstantinos Sideris
ece20dd917 Add rounded corners to inline images 2017-12-21 18:27:57 +02:00
Konstantinos Sideris
32377dc027 Remove the 'Video' prefix from video links 2017-12-21 16:02:54 +02:00
Konstantinos Sideris
1705273bb8 Fix font size inconsistencies 2017-12-21 14:36:05 +02:00
Konstantinos Sideris
ccbcfe9fa4 Bold room names 2017-12-21 13:41:05 +02:00
Konstantinos Sideris
aaa4d8c323 Prevent emoji selector for closing
fixes #176
2017-12-21 13:17:38 +02:00
Konstantinos Sideris
f11044b5eb Handle incoming invites
fixes #128
2017-12-19 22:36:12 +02:00
Konstantinos Sideris
101bf47443 Remove minimum height limit (#160, #163) 2017-12-17 17:49:22 +02:00
Konstantinos Sideris
b5e692bb28 Improve logging on event parsing failure 2017-12-16 19:31:07 +02:00
Konstantinos Sideris
65672d3dfb Allow only one application instance
fixes #141
2017-12-14 21:55:00 +02:00
Konstantinos Sideris
1d285993f7 Valgrind run
- Fix a memory leak where a layout was created without being used.
- Fix uninitialized value.
2017-12-12 09:31:00 +02:00
Konstantinos Sideris
544b623512 Add dialog to create rooms
fixes #25
2017-12-11 23:00:37 +02:00
Konstantinos Sideris
ef0b0f6879 Add menu to invite users 2017-12-10 23:59:50 +02:00
Konstantinos Sideris
19bae2a2e6 Add gui option for joining rooms (#25) 2017-12-10 15:22:01 +02:00
Konstantinos Sideris
d872b1060b Reset cache on breaking changes
fixes #154
2017-12-10 12:51:44 +02:00
Konstantinos Sideris
f176af0f7a Catch deserialization exceptions on initial /sync 2017-12-06 21:25:56 +02:00
Konstantinos Sideris
c1d0bbaf0b Prevent queue from getting blocked (#142)
Try sending a message when all the sent messages have been received
through /sync.
2017-12-06 02:59:15 +02:00