Commit graph

1107 commits

Author SHA1 Message Date
Xiang Fan
d7d7ae3004 cache: Fix reinitializing cache after destroying it
Currently the cache's directory is only initialized at first access. If
the cache gets destroyed the directory won't be created again, so future
cache data in the process cannot be saved. This can be reproduced by
logging in immediately after logout.
2019-02-25 07:54:14 +00:00
Xiang Fan
bba93fc3ea account: Fix minor typo 2019-02-24 21:37:50 +08:00
mairandomness
d71da4afec change thumb path to random file name in temp 2019-02-24 07:58:57 -05:00
mairandomness
a384c19472 create upload_thumbnail
change get_image_media_info to include thumbnail

propagate need for backend

try to debug the code

remove a println I forgot

Progress on using channel for thumb uploads

move thumbnail code to the backend

fix mimetype on json and only call ge_image_media_info on image files

remove random 'e' from util.rs

move get_image_media_info back to the frontend

create Info struct

hehe

lol
2019-02-24 07:58:57 -05:00
Mario Blättermann
25c369655f Update German translation 2019-02-22 21:49:34 +00:00
mairandomness
e8bb1c71e2 add proper type categorization on audio file upload
add duration to

remove unwraps and put early return in place

change branch in flatpak file to master for our master branch

add gstreamer-editing-services dependency

trade match statements for the ? operator

start video upload support

match mime types from the matrix-sdk library

delete meee
2019-02-21 20:59:01 -05:00
Yuri Myasoedov
6375f530eb Add Russian translation 2019-02-20 18:36:14 +00:00
Julian Sparber
6aa7230cdf use gspell from crates 2019-02-18 09:25:44 +00:00
Balázs Meskó
9446b2d716 Add Hungarian translation
(cherry picked from commit aedbeb241e)
2019-02-17 23:44:21 +00:00
Artem Polishchuk
5753d37582 Add Ukrainian translation 2019-02-16 14:32:12 +00:00
Christopher Davis
345c267d9f fractal-gtk: Use HdyDialog for Dialogs
HdyDialog is an adaptive version of GtkDialog that's always modal and adapts to fit the size of the screen if folded with HdyLeaflet. In the process of changing to use HdyDialog the width_request of the dialogs was moved from the window to their HeaderBars.

Related to https://gitlab.gnome.org/GNOME/fractal/issues/377
2019-02-15 12:03:11 -05:00
Alejandro Domínguez
dc924b1be0 API: Implement and use user request and response types 2019-02-15 13:19:52 +00:00
Christopher Davis
4d601d6472 dependencies: Remove tree_magic from fractal-gtk
Fractal crashes when switching to rooms with images due
to an issue with tree_magic. We used tree_magic to sniff out
the mime type, but we can use gio::FileInfo instead.

Related to https://gitlab.gnome.org/GNOME/fractal/issues/37
2019-02-14 16:51:27 -05:00
Jiri Grönroos
1f6cb8b676 Update Finnish translation 2019-02-10 17:59:43 +00:00
Christopher Davis
5f5903ad46 room_settings: Wrap settings in HdyColumn
Allows for the room settings to fit within small sizes.

Related to https://gitlab.gnome.org/GNOME/fractal/issues/377
2019-02-06 18:22:04 +00:00
Christopher Davis
ca3dd2d3b0 widgets/message.rs: Implement hold to right click
Right click is not possible on touchscreens, so our right click menu would be inaccessible.

Here we use GtkGestureLongPress to create our right click menu, but only on touch devices.
2019-02-06 11:00:11 +00:00
Marek Cernocky
260b8de1e7 Updated Czech translation 2019-02-06 09:28:02 +01:00
Christopher Davis
6d99cd8593 main_window: set width-request for content
The width-request of the HeaderBar dictates what size the room HeaderBar needs to be to fold at and the minimum width of the HdyLeaflets total in this case.

Prevents the room content from becoming too narrow.
2019-02-01 08:54:43 -05:00
Christopher Davis
36c1d827b3 main_window: wrap room_info GtkBox in GtkScrolledWindow
The room_info labels could cause the leaflet to fold before
they could ellipsize, causing Fractal to fold at the wrong width. By wrapping in ScrolledWindow we work around that issue.
2019-02-01 08:54:43 -05:00
Christopher Davis
3b69e8e898 fractal-gtk: Use HdyLeaflet to adapt to small sizes
Fractal's main view could only shrink so far, barring usage at smaller sizes such as a phone's screen. HdyLeaflet enables
Fractal to adapt.

Related to https://gitlab.gnome.org/GNOME/fractal/issues/377
2019-02-01 08:54:43 -05:00
Christopher Davis
0b8055dff8 appop: Remove RoomPanel enum and room_panel() func
The functionality from these symbols have been moved into
set_state().
2019-02-01 08:54:43 -05:00
Julian Sparber
9cdf4760cd room: download full list of members for each room 2019-02-01 08:46:03 +00:00
Julian Sparber
c40553c9d3 avatar: download, cache and remove room avatar 2019-02-01 08:46:03 +00:00
Julian Sparber
9b1756575b backend: clean up room avatar request
We used to request the complete room state to get only the memebers list
if there was no avatar, which was expensive and we actually have already
the members list.
This reduces memory use.
2019-02-01 08:46:03 +00:00
Christopher Davis
8537c5edc1 Revert "fractal-gtk: Use git version of tree_magic"
This reverts commit dac4e17e28.
The commit traded an inconsistent crash with a consistent freeze.
2019-01-31 16:19:24 -05:00
Christopher Davis
279d334010 markdown_popover: Remove deprecated props and clean up
`markdown_popover` used the deprecated start and end properties and abused margins to space elements out.
Now it uses the `margin` property to create margins around widgets on all sides, as well as the properties of GtkGrid and GtkBox.
2019-01-30 17:48:09 +00:00
Christopher Davis
dac4e17e28 fractal-gtk: Use git version of tree_magic
tree_magic did not previously return an Option from `from_filepath`, and used `unwrap()` internally, occasionally causing a crash when we used `is_gif()`.

On git master they have fixed this, so that's what we need to use until they put out a new release.

Related to https://gitlab.gnome.org/GNOME/fractal/issues/37
2019-01-30 00:31:10 -05:00
Daniel Mustieles
2704435800 Update Spanish translation 2019-01-29 15:51:16 +00:00
Daniel Mustieles
d2051858b9 Update Spanish translation 2019-01-28 14:19:25 +00:00
Rafael Fontenelle
71fa56f18c Update Brazilian Portuguese translation 2019-01-23 16:09:09 +00:00
Alejandro Domínguez
58c86df864 Add types related to third party protocol module API 2019-01-22 20:19:24 +01:00
azdle
2f3401f67a hookup the mouse back button to the 'app.back' action 2019-01-22 16:48:54 +00:00
Julian Sparber
6f643c12c7 backend: add a RoomMembership to Room type
This replaces some boolean properties of the Room Model with a single
property called membership. This makes the room membership (joined, left,
invited) and tag (favourties, low priority, etc) mutch more
understandable and gives the Model a better structure.
2019-01-22 17:24:32 +01:00
Daniel García Moreno
efd64a7c07 Ellipsize long display names in member list
Fix #428
2019-01-21 11:51:26 +01:00
Julian Sparber
9b6f53786f backend: force id on every Message
Since every message has to have a ID, this drops the Option for id in
the Message Model
2019-01-20 18:15:47 +00:00
Anders Jonsson
d2d1872b42 Update Swedish translation 2019-01-20 16:58:08 +00:00
Carmen Bianca BAKKER
60991cd300 Add Esperanto translation 2019-01-20 11:50:03 +00:00
Julian Sparber
aafd8096c5 sidebar: fix notification counter style 2019-01-19 11:23:43 +01:00
Piotr Drąg
58fec8d6b5 Update Polish translation 2019-01-17 11:26:12 +01:00
Piotr Drąg
182cfd9bb7 Use Unicode apostrophes in new user-visible strings
See https://developer.gnome.org/hig/stable/typography.html
2019-01-16 19:02:33 +01:00
Piotr Drąg
2c7fcb5e95 Update POTFILES.in 2019-01-16 19:00:32 +01:00
Jiri Grönroos
f77758f1e0 Update Finnish translation 2019-01-16 17:53:00 +00:00
Julian Sparber
b088a0da0c file_chooser: add file filter 2019-01-16 11:47:47 +00:00
Julian Sparber
cf68e36c75 use Gaction to change avatar in room/account settings 2019-01-16 11:47:47 +00:00
Piotr Drąg
319136b66f Update Polish translation 2019-01-15 20:07:08 +00:00
Christopher Davis
b17fe29c56 sourceview_entry: Clean up self imports
We previously included `self` of different crates so we could get things from the crates' roots with crate_name::ObjectName; This can be done in Rust 2018 without
the explicit self.
2019-01-15 10:43:07 -05:00
Christopher Davis
6982765607 fractal-gtk: Use gspell for spellchecking
With the move to GtkSourceView, we no longer had spellcheck
support in Fractal as bindings for GspellTextView were not generated.

Related to https://gitlab.gnome.org/GNOME/fractal/issues/124
2019-01-15 10:33:57 -05:00
Elizaryev Pavel
2d7c906c0a media_viewer_menu.ui: replace "..." with "…" 2019-01-15 19:19:30 +05:00
Elizaryev Pavel
5031784237 roomlist.rs: replace "favourites" with "favorites" 2019-01-15 19:19:30 +05:00
Pavel Elizaryev
c157b76f50 Fix strings:
"Save as" should probably be "Save as…"
"You’ve been invited to join to "… → "to join", not "to join to".
Time formats should use a ratio symbol ∶ as suggested by the HIG
"Favorites" → "Favourites" (multiple occurrences)

https://gitlab.gnome.org/GNOME/fractal/issues/417
2019-01-15 19:19:30 +05:00
Bilal Elmoussaoui
ff411a5763 Appdata: add kudos tags
Documentation: https://gitlab.gnome.org/GNOME/gnome-software/blob/master/doc/kudos.md
2019-01-15 07:43:37 +00:00
Bilal Elmoussaoui
d8707df903 Appdata: improve the appdata file
specs: https://freedesktop.org/software/appstream/docs/chap-Quickstart.html
2019-01-15 07:43:37 +00:00
Bilal Elmoussaoui
ba288dcaf4 meson: add tests to validate appdata/desktop file 2019-01-14 07:57:42 +00:00
Piotr Drąg
9017488331 Update Polish translation 2019-01-12 12:42:51 +01:00
Piotr Drąg
f8ed2088f4 Update POTFILES.in 2019-01-09 19:50:12 +01:00
Julian Sparber
8afbc5cd15 attach: use common filechooser widget to attach file 2019-01-08 17:58:04 +01:00
Julian Sparber
985782b3b3 file dialog: add a common filepicker dialog 2019-01-08 17:57:10 +01:00
Daniel Garcia
bd0afef09d Updated Spanish translation 2019-01-08 09:54:43 +01:00
Anders Jonsson
ec53fe1ab9 Update Swedish translation 2019-01-07 22:03:05 +00:00
Alejandro Domínguez
ff7744efc0 Use .unwrap_or_default() instead of .unwrap_or() where possible 2019-01-06 17:48:37 +01:00
Alejandro Domínguez
043e7f5d44 Call String::new() instead of String::from("") or "".to_string() 2019-01-06 17:26:12 +01:00
Alejandro Domínguez
09894a81b6 Fix warning: unused mut 2019-01-06 04:13:33 +00:00
Alejandro Domínguez
280d585a25 Reformat Cargo.toml 2019-01-06 04:13:32 +00:00
Alejandro Domínguez
84b7026b2f Upgrade to Rust 2018 2019-01-06 04:13:32 +00:00
Julian Sparber
4205a6a980 rooms: cache rooms only when the roomlist is cleared 2019-01-05 15:29:15 +00:00
Julian Sparber
78dfdc1e97 room: open default room when avaible 2019-01-02 22:54:18 +01:00
Julian Sparber
0ea988a0f3 refactor: simplify how rooms are added to the roomlist
This removes many clones and loops which where not needed.
2019-01-02 22:54:18 +01:00
Julian Sparber
f32f9cee64 refactor: pass rooms to set_rooms by value 2019-01-02 22:54:18 +01:00
Alexandre Franke
30809bccd1 Update French translation 2018-12-29 18:56:38 +00:00
Jordi Mas
4a8de6a5bb Update Catalan translation 2018-12-29 18:52:25 +01:00
Alexandre Franke
4df848370c Fix mentions of World since we moved 2018-12-28 12:44:30 +01:00
Rafael Fontenelle
4003f6d515 Update Brazilian Portuguese translation 2018-12-25 18:33:55 +00:00
Piotr Drąg
3cbbad2ec5 Update Polish translation 2018-12-24 14:39:43 +01:00
Tobias Bernard
aa9b48cad3 Invite Dialogs: minor visual fixes
- Fix the search results not expanding
- Fix the spacing around the searchbar

The two UI files are identical except for some labels and IDs and should
be merged
2018-12-24 09:53:34 +00:00
Julian Sparber
13ccd74276 roomhistory: fix date format in day divider 2018-12-23 15:43:38 +00:00
Daniel García Moreno
5c0f17a42c Release 4.0.0 2018-12-22 11:19:34 +01:00
Daniel García Moreno
9a13a32f46 Beta release 3.99.1
See #396
2018-12-20 15:51:59 +01:00
Alexandre Franke
899583c34c release: mention header bar in notes 2018-12-19 12:17:31 +00:00
Daniel García Moreno
4af4ff4073 media-viewer: disconnect the keypress signal on unmap
We were storing the signal_id, but we never disconnect that handler so
it worked the first time and then we were getting all key events and
future widgets creation doesn't work.

This patch disconnect the signal just when the widget gets unmapped, as
we create a new widget when we open the media-viewer again.

Fix #402
2018-12-18 19:12:37 +00:00
Piotr Drąg
f6d0b79fa3 Update Polish translation 2018-12-18 18:45:21 +01:00
Alexandre Franke
a8dec5f8bd release: write release notes 2018-12-18 07:41:05 +00:00
Daniel García Moreno
211a15a780 Remove code inside debug_assert macro
Code inside debug_assert! is not called in release mode. In release mode
all the debug_assert! is omitted so the code inside never runs.

https://doc.rust-lang.org/std/macro.debug_assert.html

I've moved all the code inside the debug_assert! call to outside and
assign to a variable so the assert is done in development version but
doesn't affects to the release version at all.
2018-12-17 18:14:08 +00:00
Giovanni Grieco
62f076a1b8 Add Shift+Enter shortcut in shortcuts window
This fixes issue #401
2018-12-15 16:43:18 +01:00
Daniel García Moreno
b4dc4d2b6f Beta release 3.99.0
See #396
2018-12-14 19:46:41 +01:00
Daniel García Moreno
c0971cdc90 Check if active_room is some to avoid early return
The room order wasn't updated and the room name wasn't bold when you
receive a message without a room selected because if active_room is
None, the `?` operator will return the function and the moveup and
set_bold functions never get called.

Fix #394
2018-12-14 11:25:16 +00:00
Julian Sparber
ab013749e2 sidebar: clenup code for room selection 2018-12-13 18:02:47 +01:00
Julian Sparber
0a686c5eaa sidebar: select room when open it via the notification 2018-12-13 17:41:27 +01:00
Julian Sparber
5ff067eb2e sidebar: unselect row when changing rooms, fix #385 2018-12-13 17:06:38 +01:00
Tobias Bernard
4413d22e3d big emoji: change font size to 3em 2018-12-13 12:45:55 +01:00
Alexandre Franke
93472c1a4a message: catch more emoji combinations 2018-12-13 09:39:56 +00:00
Julian Sparber
61916e3868 App: reenable devel style 2018-12-12 18:53:25 +01:00
Julian Sparber
0ce3e63e33 App: don't allow App::new() to fail 2018-12-12 15:20:43 +01:00
Julian Sparber
4f6d546830 sticker: remove code for sticker #239 2018-12-12 15:20:43 +01:00
Julian Sparber
1d89fdf85d app: show ErrorDialog (if possible) when app fails to start 2018-12-12 15:20:43 +01:00
Julian Sparber
4818ca1e03 ErrorDialog: show dialog on top of current active window 2018-12-12 15:20:43 +01:00
Julian Sparber
6b43f61394 App: store weak pointer to AppOp 2018-12-12 15:20:43 +01:00
Julian Sparber
c910aad9d7 app: add workarond for GTK::Application::present() 2018-12-12 15:20:43 +01:00
Julian Sparber
383d8865f8 autocomplete: close autocomplete popover on esc 2018-12-12 15:20:43 +01:00
Julian Sparber
29a77d6ec6 refactor: Add back action to go to previous view
This uses a store to keep track of the AppStates, so the user can go
back to the previous state by clicking the back button or press Escape.
2018-12-12 15:20:43 +01:00
Julian Sparber
253ed04e90 message: connect image row directly to action
This connects the image row directly to the action to open the media
viewer, this way the action doesn't need to be passed to message.rs.
FIX: button press on images don't close the left click menu
2018-12-12 15:20:43 +01:00
Julian Sparber
0d42618161 refactor App and add WeakApp
This cleans up App and addes the possibility to have a weak reference to
the App. It's heavily inspired by the example application written by
Slomo: https://github.com/sdroege/rustfest-rome18-gtk-gst-workshop
2018-12-12 15:20:43 +01:00
Daniel García Moreno
420e64931a Use letter-avatar from crates.io 2018-12-12 11:34:29 +01:00
Alexandre Franke
35d4beeba9 Merge branch 'wip/big-emojis' into 'master'
message: Make emoji-only messages, big

Closes #367

See merge request World/fractal!291
2018-12-11 17:03:04 +00:00
Alejandro Domínguez
111e81a48c Trim spaces on Matrix ID/Alias on Join Room window 2018-12-11 11:40:26 +01:00
Rafael Fontenelle
93648eb8d3 Update Brazilian Portuguese translation 2018-12-11 00:50:27 +00:00
Zeeshan Ali
6c599708f0 message: Make emoji-only messages, big
Just like most chat apps do these days.

Fixes #367.
2018-12-09 22:53:21 +01:00
Zeeshan Ali
8b39ce1f2e fractal-gtk: Bump regex requirement to 1.1.0
We'll need the latest regex in a following patch for emoji matching.
2018-12-09 22:53:21 +01:00
Piotr Drąg
94b084f4ec Update Polish translation 2018-12-09 11:15:15 +00:00
Daniel Garcia Moreno
e610fb6078 Merge branch 'patch-1' into 'master'
Don't translate the default text of in-app notification

See merge request World/fractal!300
2018-12-09 08:45:48 +00:00
Julian Sparber
b7e57a32e7 refactor: remove AppOp Loop fix #374 2018-12-08 00:33:52 +01:00
Bilal Elmoussaoui
802ca6ac25 Remove the label property. 2018-12-07 20:24:50 +00:00
Bilal Elmoussaoui
c6f6ea3404 Don't translate the default text of in-app notification 2018-12-07 19:37:21 +00:00
Daniel García Moreno
eee62d7b62 Update POTFILES with current dir listing 2018-12-07 13:44:07 +01:00
Julian Sparber
1ce73a7881 Notification: use GNotification 2018-12-07 12:44:23 +01:00
Julian Sparber
8bbad46cff roomhistory: move load more messages to actions 2018-12-07 12:20:00 +01:00
Daniel Garcia Moreno
376df188d2 Merge branch 'globals' into 'master'
Move App Actions to new Location

See merge request World/fractal!297
2018-12-07 10:54:52 +00:00
Daniel Garcia Moreno
f953f89286 Merge branch 'dialog' into 'master'
Move Save As Dialog to Actions

See merge request World/fractal!293
2018-12-07 10:42:27 +00:00
Julian Sparber
5e4c91233e room: refactor set_active_room_by_id()
This removes clones of Rooms, and removes some old code.
2018-12-06 16:32:07 +01:00
Julian Sparber
4641fa460d roomlist: create a Action for opening a room 2018-12-06 14:35:11 +01:00
Julian Sparber
5863e89c82 actions: move global app actions to new location 2018-12-06 14:30:16 +01:00
Julian Sparber
d8eee69fec POTFILES: replace source_viewer.rs with source_dialog.rs 2018-12-05 23:38:03 +01:00
Julian Sparber
5f271a4e01 refactor: move save as dialog to actions 2018-12-05 20:12:13 +01:00
Julian Sparber
2e651b1536 refactor: add a common ErrorDialog widget 2018-12-05 20:12:13 +01:00
Julian Sparber
a7e0f0f28e macro: fix upgrade_weak!() 2018-12-05 20:12:13 +01:00
Julian Sparber
855fea00bb message.rs: use actions to open file and save file 2018-12-05 20:12:13 +01:00
Daniel Garcia Moreno
34784313f1 Merge branch 'actions' into 'master'
Use GActions

See merge request World/fractal!290
2018-12-05 08:31:00 +00:00
Daniel Garcia Moreno
8aef502d57 Merge branch 'internal' into 'master'
appop loop: remove AddRoomMessage

See merge request World/fractal!289
2018-12-05 08:01:33 +00:00
Julian Sparber
73ea3c7678 roomhistory: use action to open media viewer 2018-12-05 00:15:11 +01:00
Julian Sparber
0a0203bf72 POFILES: add files for actions modules 2018-12-05 00:15:11 +01:00
Julian Sparber
59977e8fb1 refactor: use GAction
This adds a new module actions, which contains submodules containing
actions a widget can preform. This is the first step of removing the
AppOp Loop. Also this allows us to define actions in a more general way
without passing all data to each widget.
2018-12-05 00:15:09 +01:00
Julian Sparber
2b24c3b7a5 source viewer: refactor source viewer 2018-12-05 00:13:52 +01:00
Julian Sparber
c5c270b1a2 appop loop: remove AddRoomMessage 2018-12-04 21:58:52 +01:00
Julian Sparber
fe4faa05d5 message.rs: cleanup code 2018-12-03 16:06:20 +01:00
Julian Sparber
ad26afb36e message.rs: cleanup code 2018-12-03 16:04:25 +01:00
Julian Sparber
f1e5ef9e4d message.rs: cleanup code 2018-12-03 16:02:09 +01:00
Jordan Petridis
591403ef5c
Remove plain password storage 2018-12-03 14:51:15 +02:00
Julian Sparber
a08dd93fc8 roomhistory: fix strange scroll movement when using a touchpad
This is a workaround for bug #1494 in gtk https://gitlab.gnome.org/GNOME/gtk/issues/1494
2018-12-02 17:59:35 +01:00
Alexandre Franke
c5cb8d7f84 rust: Test booleans properly
Pattern matching is an anti-pattern here
`if` is the way to go
2018-11-28 14:21:49 +01:00
Zeeshan Ali
6c1ec03e6b Fix formatting of all Rust code
Rust of `cargo +nightly fmt`.

Fixes #369.
2018-11-27 21:15:34 +01:00
Julian Sparber
ae1373b72c roomhistory: use revealer to hide NewMessageDivider 2018-11-26 15:57:49 +01:00
Daniel Garcia Moreno
2af3a3932d Merge branch 'positioning' into 'master'
roomhistory: use new message divider as entry point for a room (based on !276)

See merge request World/fractal!278
2018-11-26 08:16:14 +00:00
Daniel Garcia Moreno
a423f8c1b7 Merge branch 'appop_cleanup' into 'master'
cleanup: remove unused properties in appop

See merge request World/fractal!277
2018-11-26 08:14:38 +00:00
Daniel Garcia Moreno
f3275eefe8 Merge branch 'old_queue' into 'master'
roomhistory: load old messages to history in batch

See merge request World/fractal!276
2018-11-26 08:13:24 +00:00
Zeeshan Ali
a547ac45ea avatar: Scale the avatars by the min dimension
If we scale the avatars by the dimension that's the minimum (width vs
height), we don't end up chopping the avatar if it's not rectangular.

Fixes #163.
2018-11-25 23:31:47 +01:00
Julian Sparber
203e319b46 roomhistory: use new message divider as entry point for a room
the room history is scrolled to the new message divider so that the user
doesn't need to search for the last read message.
This works for now only if the last seen message is in the first 40
messages fractal downloads.
2018-11-23 15:08:32 +01:00
Julian Sparber
6ae15cd2cc cleanup: remove unused properties in appop 2018-11-23 12:18:07 +01:00
Julian Sparber
3d7182c531 roomhistory: load old messages to history in batch
This improves the performence of old message loading. This passes all
messages from a batch directly to the room history. Also this way the
Internal AppOp loop isn't used and it makes sure that the lazy loading
queue runs only once.
2018-11-23 11:28:56 +01:00
Rafael Fontenelle
fc539a2ce8 Update Brazilian Portuguese translation 2018-11-22 08:48:13 +00:00
Daniel Garcia Moreno
a0fcda1d41 Merge branch 'add_new_divider' into 'master'
Add "new message divider"

See merge request World/fractal!273
2018-11-20 13:23:08 +00:00
Tony Skuse
eafdaf7636
adds spacing above emotes #235 2018-11-19 09:33:52 -08:00