Commit graph

415 commits

Author SHA1 Message Date
Bruno Windels
e3d70f3999 ensure selection is not lost upon clicking format bar in chrome 2019-09-05 11:01:44 +02:00
Bruno Windels
af535986d2 fix css lint 2019-09-04 16:40:34 +02:00
Bruno Windels
e7db660820 fixup: css, we have 5 buttons 2019-09-04 16:39:07 +02:00
Bruno Windels
65ddfc0a50 show format bar when text is selected 2019-09-04 16:35:03 +02:00
Bruno Windels
1063da0ed1
Revert "New composer: show markdown legend on focus" 2019-09-03 08:27:45 +00:00
Bruno Windels
b7768f34f2 Add legend and style it 2019-09-02 16:15:18 +02:00
Sorunome
fe9ae46ffb
Merge branch 'develop' of https://github.com/matrix-org/matrix-react-sdk into soru/spoilers 2019-08-28 20:23:24 +02:00
Bruno Windels
eddaece43e add visual bell color to theme + choose better value for dark mode 2019-08-28 18:00:57 +02:00
Bruno Windels
85efb71a23 add visual bell when no replacements are available
also add try/catch in _tabCompleteName so errors don't get swallowed
2019-08-28 15:53:16 +02:00
Bruno Windels
4a27abb131 fix css lint 2019-08-22 15:11:31 +01:00
Bruno Windels
71286b5610 restore reply_to_event action 2019-08-22 13:33:20 +01:00
Bruno Windels
d4ca087abe fix styling issues
- grow/shrink between min and max height correctly
 - don't grow wider than available space
 - some space between editor and buttons
2019-08-22 13:33:20 +01:00
Bruno Windels
33c6945fc4 align autocomplete at top of composer 2019-08-22 13:33:20 +01:00
Bruno Windels
64e83a8111 font-size 2019-08-22 13:33:20 +01:00
Bruno Windels
f9992a1fc6 implement editor placeholder 2019-08-22 13:33:20 +01:00
Bruno Windels
cfbd2e9cc8 support basic sending with new main composer
this removes all formatting options, as the new editor doesn't
have any.
2019-08-22 13:33:20 +01:00
Bruno Windels
92d7263046 move editor padding to edit specific style file
as it will be different for the main composer
2019-08-22 13:33:20 +01:00
Bruno Windels
505846ce53 split up css, update class names 2019-08-22 13:33:20 +01:00
Anton Zuenko
a3eb45e0b9 Fix waste of space of collapsed left panel
Signed-off-by: Anton Zuenko <anton@zuenko.ru>
2019-08-05 18:03:20 +02:00
J. Ryan Stinnett
2d4264c39d Keep widget URL in permission screen to one line
This keeps the widget URL to one line max, so that the allow button will always
be visible. The full URL can be viewed by hovering.

Fixes https://github.com/vector-im/riot-web/issues/10402
2019-07-23 18:06:37 +01:00
J. Ryan Stinnett
ca1e5bb3ae Comment disabled rules 2019-07-11 09:30:01 +01:00
J. Ryan Stinnett
38d6953bf6 Manually fix remaining stylelint issues 2019-07-10 16:56:40 +01:00
J. Ryan Stinnett
dd2079bffc Auto-fix stylelint issues
These `stylelint` issues were autofixed by the tool itself and look sane to me.
2019-07-10 16:56:40 +01:00
Bruno Windels
353f5a205c
Merge pull request #3170 from matrix-org/bwindels/handle-associated-failures
Handle associated event send failures
2019-07-03 09:02:58 +00:00
Bruno Windels
fc3c4fccc2 set background on highlighted messages 2019-07-02 18:31:11 +02:00
Bruno Windels
1af8da4a4a change lozenge color of unsent redacted events to red
use css vars so we don't have to repeat the whole lozenge style
2019-07-01 11:06:55 +02:00
Michael Telatynski
49b89217a3 MemberInfo wrap Device Name/ID
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-06-30 19:21:19 +01:00
Travis Ralston
7f2ab39609
Merge pull request #3142 from matrix-org/travis/preview-loading
Show a loading state for slow peeks
2019-06-27 09:24:25 -06:00
Bruno Windels
15d286ed93
Merge pull request #3144 from matrix-org/bwindels/edit-history
Edit history dialog
2019-06-26 14:38:53 +00:00
Bruno Windels
498db2597d show hand on hovering (edited) marker 2019-06-26 12:15:13 +02:00
Bruno Windels
c9aa7efe54 don't require EventTile for default timestamp style 2019-06-26 11:59:56 +02:00
Travis Ralston
ca6ddf324f Show a loading state for slow peeks 2019-06-25 20:56:33 -06:00
Travis Ralston
0701d89bbe Fix upgrade warning being chopped off
The flex box was behaving a bit strange, so we just wrap the content and change `height: 235px` to `max-height: 235px` to get scrollbars.
2019-06-25 15:40:22 -06:00
Bruno Windels
f9188bca92 reduced opacity for pending redactions 2019-06-18 13:48:51 +02:00
Michael Telatynski
4fda6c21de Use overflow on MemberInfo name/mxid so that the back button stays
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-06-12 21:58:10 +01:00
Sorunome
eddac4b188
blur spoilers 2019-06-11 21:08:45 +02:00
Hubert Chathi
4ab491f823 truncate long display names in timeline headings
partial fix for vector-im/riot-web#5739
2019-06-06 22:41:10 -04:00
J. Ryan Stinnett
4b18bb17fe Show read receipts on top of message
This allows you to view a long expanded set of read receipts even while hovering
a message.

Fixes https://github.com/vector-im/riot-web/issues/7608
2019-06-06 14:02:35 +01:00
J. Ryan Stinnett
2be00ee0e0 Native emoji require extra line-height
Increase line-height so that native emoji aren't cut off when we fall back to
them.

Fixes https://github.com/vector-im/riot-web/issues/9898
2019-05-30 10:26:12 +01:00
Sorunome
d8f4512439
add basic spoiler support 2019-05-22 20:41:27 +02:00
Bruno Windels
2d4d608ed6
Merge pull request #2997 from matrix-org/bwindels/pill-avatars
Message editing: render avatars for pills in the editor
2019-05-21 12:11:06 +00:00
Bruno Windels
e48e72c162 pr feedback 2019-05-21 13:50:27 +02:00
Bruno Windels
7c03d71607 give continued events a little bit of top padding
this way, the background isn't clipped at the top
2019-05-21 12:20:58 +02:00
Matthew Hodgson
d3f06763b3
Merge branch 'develop' into matthew/twemoji 2019-05-20 16:38:44 +01:00
Bruno Windels
1368a5eb80
Merge pull request #2996 from matrix-org/bwindels/composerdesign
Message editing: apply design
2019-05-20 08:42:41 +00:00
Matthew Hodgson
e48cc44cba apply monospace font correctly 2019-05-19 17:41:18 +01:00
Matthew Hodgson
069a5a9546 remove obsolete emojione css 2019-05-19 17:11:41 +01:00
Matthew Hodgson
24b03374ac moar lineheight needed for big twemoji 2019-05-19 16:48:29 +01:00
Bruno Windels
f9462d1012 hide timestamp while editing 2019-05-17 16:01:52 +01:00
Bruno Windels
ddefeae136 update design of editor to look as close to original tile (and design)
the buttons below the composer are overlayed onto the previous event.
In case of the last event, for now we make them not overflow, but make the
tile grow. The design says it should overlay on the main composer for the last
event tile, postponing that for a bit though as not sure what is the best way
to do that.
2019-05-17 15:33:11 +01:00
J. Ryan Stinnett
43c9e6d942 Reactions / editing tooltip tweaks 2019-05-17 15:10:35 +01:00
J. Ryan Stinnett
603e6b7055 Adjust edited tooltip to use shared styles 2019-05-17 12:19:02 +01:00
Bruno Windels
4a6725d4c2 Message editing: show (edited) marker on edited messages, with tooltip 2019-05-17 11:36:36 +01:00
Michael Telatynski
fd07b5c476 use scss variable for grey
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-05-14 23:03:02 +01:00
Michael Telatynski
3cd9c152c2 Check permission to invite before showing invite buttons/disable them
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-05-11 19:45:24 +01:00
J. Ryan Stinnett
ed8bbc7082 Extract message options button to action bar
This adds a new action bar component to hold multiple per-message actions. This
existing options button has moved to this new component, and is currently the
only action.
2019-04-29 15:20:50 +01:00
J. Ryan Stinnett
530c92e03d Rename event edit button to options button
This naming is clearer as it doesn't really edit at all (it shows a context
menu). This should also be less confusing with actual editing when it arrives.
2019-04-29 15:20:50 +01:00
Luca Weiss
12f92c49a6
Mark a few CSS classes as not selectable
Should be enough to make copy-pasting not a nightmare.

For vector-im/riot-web#7460

Also remove an instance where the vendor prefixes were used, but a build
step adds those automatically

Signed-off-by: Luca Weiss <luca@z3ntu.xyz>
2019-04-23 19:52:48 +02:00
Bruno Windels
1100320351 make non-member inviter name also bold 2019-04-17 11:02:58 +02:00
Bruno Windels
86620839ae make username clickable 2019-04-17 10:57:45 +02:00
Bruno Windels
8a371080d7 colored inviter name and layout 2019-04-17 10:22:35 +02:00
Bruno Windels
e40757a801 make sure long subtitles dont overflow 2019-04-16 16:19:50 +02:00
Bruno Windels
c1ff5f2fba implement style 2019-04-15 17:11:26 +02:00
Bruno Windels
01e9de9a3a differentiate style based on preview or not 2019-04-12 12:54:13 +02:00
Bruno Windels
0553a6f1d6 some style changes 2019-04-11 13:07:54 +02:00
Travis Ralston
223498a979
Merge pull request #2874 from matrix-org/travis/breadcrumbs/dms
Add an indicator to show a room is a direct chat in breadcrumbs
2019-04-05 08:15:12 -06:00
Travis Ralston
b7e557e49a Autohide the scrollbar on breadcrumbs
Fixes https://github.com/vector-im/riot-web/issues/9349
2019-04-04 16:27:00 -06:00
Travis Ralston
095e6a3ba6 Add an indicator to show a room is a direct chat
Fixes https://github.com/vector-im/riot-web/issues/8797
2019-04-04 14:31:23 -06:00
Travis Ralston
f5600fd4d7 Add badges to breadcrumb rooms
Fixes https://github.com/vector-im/riot-web/issues/8606
2019-04-03 15:29:15 -06:00
Travis Ralston
7e2291592c Apply 50% opacity to left breadcrumbs
Fixes https://github.com/vector-im/riot-web/issues/8564

We listen for membership changes to make sure the state is kept up to date.
2019-04-01 11:59:39 -06:00
Bruno Windels
a326c83016
Merge pull request #2842 from matrix-org/bwindels/bacat-scrolling-merged-develop
BACAT Scrolling
2019-03-29 14:02:15 +00:00
Travis Ralston
9b64dd0cd7 Support horizontal scrolling on breadcrumbs
Fixes https://github.com/vector-im/riot-web/issues/8714
Fixes https://github.com/vector-im/riot-web/issues/8890
Fixes https://github.com/vector-im/riot-web/issues/9034
Fixes https://github.com/vector-im/riot-web/issues/8954

This turned out to be much more complicated than it needed to be. We use an IndicatorScrollbar to do all the math for us and some minor changes have been made so it can flag left/right overflow. The complicated part is the css changes which make the gradients work: unlike the RoomSubList, we have to calculate the offset of the indicators (gradients) on our own because position:sticky doesn't work horizontally.

The changes to the css (well, mostly pointer-events:none) make it so the gradient doesn't interfere with the room avatars. 

9034 and 8954 are fixed by this because they represent an overflow-x:none style breakage where browsers won't let you scroll without a scrollbar. The gradient offset problem is also demonstrated in 8954.
2019-03-27 17:52:05 -06:00
Bruno Windels
494779393f Merge branch 'develop' into bwindels/bacat-scrolling 2019-03-21 13:50:32 +01:00
Travis Ralston
f6e3437944 Update text in RoomUpgradeWarningBar to match suggestions 2019-03-15 16:08:35 -06:00
Travis Ralston
5cea8e846c
Merge pull request #2794 from matrix-org/travis/offline-members
Fix CSS syntax errors preventing offline member opacity from working
2019-03-15 08:46:56 -06:00
Bruno Windels
dad382a4b7 use AutoHideScrollbar in memberlist 2019-03-15 10:16:21 +01:00
Travis Ralston
e4181c4e3e Make the EntityTile chevron a masked SVG for theming
Fixes https://github.com/vector-im/riot-web/issues/7320
2019-03-14 15:59:00 -06:00
Travis Ralston
56620286b5 Fix CSS syntax errors preventing offline member opacity from working
Fixes https://github.com/vector-im/riot-web/issues/9178
2019-03-14 15:13:35 -06:00
J. Ryan Stinnett
45063cad4a
Merge pull request #2780 from jryans/auth-validation
Initial portions of support for Field validation
2019-03-14 10:19:21 +00:00
J. Ryan Stinnett
a719839d9f Use a distinct color for selected autocomplete items
This restores the ability to see which autocomplete item is selected (which
seems to have gotten lost during redesign).

Fixes https://github.com/vector-im/riot-web/issues/9134
2019-03-12 14:51:37 +00:00
Matthew Hodgson
40f16fa310 adds validation for fields.
* renames RoomTooltip to be a generic Tooltip (which it is)
 * hooks it into Field to show validation results
 * adds onValidate to Field to let Field instances call an arbitrary validation function

Rebased from @ara4n's https://github.com/matrix-org/matrix-react-sdk/pull/2550
by @jryans. Subsequent commits revise and adapt this work.
2019-03-12 14:02:54 +00:00
Travis Ralston
241309ab83 Use CSS for hovering the tile 2019-03-07 14:55:17 -07:00
Bruno Windels
18d897298d ensure flair is 16px high
so it doesn't push the message down
2019-03-05 14:49:07 +01:00
Bruno Windels
69016e32a4 fix margin on e2e icon in member panel 2019-02-28 15:39:10 +01:00
J. Ryan Stinnett
4b340450b9 Rename Feather icon directory to feather-customised
These icons are based on Feather as the original source, but they have various
tweaks applied, such as stroke width, color, etc. Hopefully the tweaked name
makes this more obvious in the future.
2019-02-27 10:42:10 +00:00
J. Ryan Stinnett
3b3f0ea957 Move E2E icons out of feather dir
They appear to all be created by Nad, according to
https://github.com/matrix-org/matrix-react-sdk/pull/2557.
2019-02-26 20:31:32 +00:00
Nad Chishtie
88dfd3287f Normalise room list font weight and make bold when there are unreads. 2019-02-25 11:02:27 -07:00
Michael Telatynski
fa5f1df194 Fix z ordering of the overflow tile
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-02-24 03:18:21 +00:00
Bruno Windels
f11505a9de bring back user page
Adds a UserView that contains a MainSplit with an empty div
and a RightPanel, preset to the given member.

UserView fetches the profile and creates a fake member, which
it passed on to the RightPanel.

this doesn't use the view_user action on purpose, to avoid any
interference of the UserView when trying to view a room member.
2019-02-20 12:45:55 +01:00
J. Ryan Stinnett
edf10dbdde
Merge pull request #2659 from jryans/dark-theme-more-2
Dark theme follow ups round 2
2019-02-19 17:51:29 +00:00
J. Ryan Stinnett
e7a84b33e8
Merge pull request #2653 from matrix-org/benp/prevent-accidental-username-clicking
make mx_SenderProfile inline-block, reduces clickable area around usernames
2019-02-19 12:26:27 +00:00
J. Ryan Stinnett
5fb990eb5f Convert Markdown button to SVG mask
This makes it easier to theme via CSS, which helps with the dark theme.
2019-02-18 18:26:52 +00:00
J. Ryan Stinnett
09ed795c79 Allow theming member info minimise button 2019-02-18 16:02:10 +00:00
Travis Ralston
25525f93d2
Merge pull request #2655 from aaronraimist/fix-pre-dark
Make pre use the same text color as code
2019-02-16 11:36:26 -07:00
Aaron Raimist
9bc0ae7fc5
Add comment
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2019-02-16 12:28:42 -06:00
Travis Ralston
b27f3688f1
Merge pull request #2649 from AndrewJDR/reinstate_lowered_opacity_for_offline_avatars
Bring back the lowered opacity for offline/unavailable avatars.
2019-02-15 22:42:25 -07:00
Aaron Raimist
eb908dbd0d
Make pre use the same text color as code
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2019-02-15 21:38:49 -06:00
Ben Parsons
3f8ff77b7e make mx_SenderProfile inline-block, stops accidental name inserting 2019-02-15 15:55:16 +00:00
Bruno Windels
d40da42268
Merge pull request #2647 from matrix-org/bwindels/e2eiconwholeeventhover
highlight e2e icon on event when hovering whole event
2019-02-15 15:26:20 +01:00
Bruno Windels
c39c0e4834 fix for the ... button not being aligned for group invite tiles 2019-02-15 13:07:33 +01:00
Andrew Johnson
85930fca70 Bring back the lowered opacity for offline/unavailable avatars.
At some point during the riot redesign, the bit of css that lowered the opacity for offline/unavailable contacts
was removed. This makes it impossible to discern presence for a contact unless you hover your cursor over their
avatar.

It's very handy to be able to see presence at a glance without any hovering, so this PR reintroduces the lowered opacity.
I've also slightly decreased the opacity level from 0.66 to 0.5 to make it slightly more noticable.
2019-02-15 03:31:55 -08:00
Bruno Windels
840f3cede8 highlight e2e icon on event when hovering whole event 2019-02-14 18:04:15 +01:00
Bruno Windels
84b53faf9e make e2e icons on message transparent 2019-02-14 17:00:47 +01:00
J. Ryan Stinnett
5f6907c85e Improve gradients for Safari 2019-02-13 15:06:40 +00:00
J. Ryan Stinnett
fb4fd54f6f Stop gradients at panel bg color 2019-02-13 13:48:56 +00:00
Matthew Hodgson
4c56b45a9f back out bold unread 2019-02-13 12:46:08 +00:00
Matthew Hodgson
8464155663 fix topic & room name alignment in header 2019-02-13 12:16:09 +00:00
J. Ryan Stinnett
e6f9b7a109
Merge pull request #2619 from matrix-org/jryans/dark-theme-redesign
Add redesigned dark theme
2019-02-13 11:45:30 +00:00
Will Hunt
c9e11050f2
Merge pull request #2610 from matrix-org/hs/weighting-for-rooname
Fix mx_RoomTile_name weighting
2019-02-13 11:24:05 +00:00
J. Ryan Stinnett
6c954dadc8 Allow theming message composer buttons 2019-02-13 10:47:04 +00:00
J. Ryan Stinnett
8652a094f3 Allow theming room header buttons 2019-02-13 10:47:04 +00:00
Bruno Windels
875f792728
Merge pull request #2620 from matrix-org/bwindels/e2eiconsanddialog
Fixes and styling related to e2e icons and dialogs
2019-02-13 09:18:58 +01:00
Bruno Windels
12b6383831
Merge pull request #2618 from matrix-org/bwindels/fixstickers
Fix: stickers layout
2019-02-13 09:17:21 +01:00
Will Hunt
e2cecad535
Update _RoomTile.scss 2019-02-12 19:21:31 +00:00
Bruno Windels
4d3cc0a53f fix e2e icon top offset in compact mode 2019-02-12 19:14:46 +01:00
Bruno Windels
92668628ec fix sticker layout 2019-02-12 16:55:37 +01:00
Will Hunt
946a910692
Probably could reduce it to this? 2019-02-12 12:06:53 +00:00
Will Hunt
56bb6c870a
You are no longer needed 2019-02-12 12:06:23 +00:00
Bruno Windels
24cb46a991 should be on the left with animations so the animate class can clear it 2019-02-12 12:22:50 +01:00
Bruno Windels
229d905835 copyright 2019-02-12 12:21:40 +01:00
Bruno Windels
2315e4bfb4 add animation when adding a room 2019-02-12 12:16:56 +01:00
Bruno Windels
5efd92f3ec make rooms come in from left rather than the right 2019-02-12 11:26:46 +01:00
Bruno Windels
aaea40a93d add breadcrumbs component 2019-02-12 11:04:25 +01:00
Will Hunt
4a46a3e4e0
Fix mx_RoomTile_name weighting 2019-02-11 13:54:52 +00:00
Will Hunt
119806bdbd
!important shouldn't have a space
I wonder if this is making SCSS choke.
2019-02-11 13:31:06 +00:00
David Baker
9b4a6cf442 Make prettier 2019-02-08 16:27:25 +00:00
Travis Ralston
eac50aa800 Remove old user and room settings
This takes out the old user and room settings, replacing the paths with the new dialog editions. The labs setting has been removed in order to support this change.

In addition to removing the old components outright, some older components which were only used by the settings pages have been removed. The exception is the ColorSettings component as it has a high chance of sticking around in the future.

Styles that were shared by the settings components have been broken out to dedicated sections, making it easier to remove the old styles entirely.

Some stability testing of the app has been performed to ensure the app still works, however given the scope of this change there is a possibility of some broken functionality.
2019-02-04 13:40:21 -07:00
Bruno Windels
7ccc694eea minimal theming on app permission in widget 2019-02-01 23:24:56 +01:00
Bruno Windels
e2ce12f5c1 wip 2019-02-01 23:15:14 +01:00
Bruno Windels
ce5e56aaac update icons in member info device section 2019-02-01 17:32:46 +01:00
Bruno Windels
21fe266394 add icon to member info to indicate all devices of a user are trusted 2019-02-01 17:08:09 +01:00
Bruno Windels
88ad780b6b update message e2e icons
also remove encrypted icon as header/composer already indicate encryption
2019-02-01 16:43:12 +01:00
Bruno Windels
09c3391dd8 replace existing icon in composer with the new one 2019-02-01 13:40:42 +01:00
Bruno Windels
f2928c184d create warning/verified icon to use in header/composer/member info 2019-02-01 13:39:56 +01:00
Bruno Windels
f60cfe5cb2
Merge pull request #2545 from matrix-org/bwindels/missingavatarlayout
layout composer independent of avatar being present
2019-01-31 14:41:44 +00:00
Bruno Windels
afed1b725d layout composer independent of avatar being present 2019-01-31 15:13:18 +01:00
Matthew Hodgson
f658288f2b
Merge pull request #2543 from matrix-org/matthew/cyrillic
Matthew/cyrillic
2019-01-31 13:11:14 +01:00
Matthew Hodgson
47f775f579 apply correct weight on unread roomtiles 2019-01-31 13:10:11 +01:00
Matthew Hodgson
2fc6f89953 remove italics CSS skew 2019-01-31 11:51:26 +01:00
Bruno Windels
c9900deebe center invite button caption 2019-01-30 16:24:25 +01:00
Bruno Windels
3a8e0aec48
Merge pull request #2533 from matrix-org/bwindels/avoidcomposerhscroll
avoid horizontal scrollbar in composer when placeholder doesn't fit
2019-01-30 12:35:10 +00:00
Bruno Windels
13b97ee332 avoid horizontal scrollbar in composer when placeholder doesn't fit 2019-01-30 12:53:15 +01:00
Bruno Windels
3f7f984536 also don't stretch buttons when text is larger 2019-01-30 11:23:31 +01:00
Bruno Windels
015c14237d stretch device label in member info if content doesn't fill it 2019-01-30 11:20:20 +01:00
Bruno Windels
7d6f551841 small makeover of member info panel
this removes the style sharing between the verify buttons in the memberinfo panel and
and the encrypted event dialog because the diverge too much now.
2019-01-29 21:14:16 +01:00
David Baker
2d61a2508d
Merge pull request #2514 from matrix-org/bwindels/roomlistjslayout-bis
Redesign: new roomlist layout fixes
2019-01-28 15:53:28 +00:00
Bruno Windels
79a44b1bfb always hide overflow on RoomList in case Layout screws up 2019-01-28 16:03:49 +01:00
Bruno Windels
55e0838c82
Merge pull request #2507 from matrix-org/bwindels/roomlistjslayout
Redesign: new layout algorithm for room sublists.
2019-01-28 14:55:31 +00:00
Bruno Windels
a5297303b0 remove flexbox layout 2019-01-24 15:44:16 +01:00
Christopher Medlin
be94e1aebc Fix integrations error popup
Signed-off-by: Christopher Medlin <christopherjmedlin@protonmail.com>
2019-01-22 11:44:55 -08:00