Commit graph

284 commits

Author SHA1 Message Date
Lim Chee Aun
e6d6adb480 First small step to resolving mastodon links
And open them inside Phanpy instead of like an external link
2023-02-23 16:45:53 +08:00
Lim Chee Aun
c13cab51a9 Show large card for content with text-weight=1
Also finally replace the hacky CSS with something more legit
2023-02-21 23:59:34 +08:00
Lim Chee Aun
c2e9dc0efe Use url, not uri 2023-02-21 14:29:25 +08:00
Lim Chee Aun
5c6c9a43f2 Fix regression: threadify stopped working
This is due to status key changed with extra instance string
2023-02-19 21:16:23 +08:00
Lim Chee Aun
d5bceb1d81 Handle logged-out cases 2023-02-19 14:49:53 +08:00
Lim Chee Aun
7e65d8be5d Make smaller statuses stand out in the carousel 2023-02-19 01:10:06 +08:00
Lim Chee Aun
5707da703f Revert "Skeleton avatar should follow size"
This reverts commit f579a8bfb9.
2023-02-18 01:45:44 +08:00
Lim Chee Aun
f579a8bfb9 Skeleton avatar should follow size 2023-02-17 19:08:19 +08:00
Lim Chee Aun
9e1f62e47b Use instance check instead of authenticated check 2023-02-17 17:40:39 +08:00
Lim Chee Aun
d8e6d349a0 Fix undefined 'votes' 2023-02-17 11:00:34 +08:00
Lim Chee Aun
c37df11a25 Show pinned posts 2023-02-17 10:12:59 +08:00
Lim Chee Aun
4dae1d1576 Shorter copies 2023-02-16 19:10:26 +08:00
Lim Chee Aun
c01d3098b8 Add pencil 2023-02-13 09:22:03 +08:00
Lim Chee Aun
30b747527e Okayyy this is dangerous 2023-02-12 14:24:27 +08:00
Lim Chee Aun
2f2e343115 Shorter skeleton 2023-02-11 21:09:36 +08:00
Lim Chee Aun
d9564bff72 Still need these fallbacks for now 2023-02-11 18:55:21 +08:00
Lim Chee Aun
129417bad3 Fix wrong links 2023-02-09 17:41:42 +08:00
Lim Chee Aun
c6c18aae09 Fix spoiler bug again 2023-02-07 12:56:26 +08:00
Lim Chee Aun
1357c1b2bd Fix more edge cases after breaking changes 2023-02-06 16:35:03 +08:00
Lim Chee Aun
de411b4dff Fix some posts can be spoiler but sensitive: false 2023-02-06 00:19:22 +08:00
Lim Chee Aun
a130743d4c Breaking: refactor all masto API calls
Everything need to be instance-aware!
2023-02-06 00:17:19 +08:00
Lim Chee Aun
bbb3017b2d Quietly handle hashtag links
No follow/unfollow yet.
2023-01-31 19:31:25 +08:00
Lim Chee Aun
292186e918 New UI experiment: media modal + status detail page
- Extracted out the media modal and media component from Status
- Use :has CSS selector to do most of the layout work
- Expecting edge case UI bugs
2023-01-29 15:23:53 +08:00
Lim Chee Aun
ae90b41aae New feature: "Show all sensitive content" menu 2023-01-28 22:34:36 +08:00
Lim Chee Aun
aaeca7dd03 Refactor out a Timeline component
Also replace login() with createClient() for faster log in
2023-01-28 18:52:18 +08:00
Lim Chee Aun
ded6420c1a Fallback if browser doesn't autoplay 2023-01-27 17:51:31 +08:00
Lim Chee Aun
3392f57462 Rewrite scrolling logic in carousel
Just normal scroll event is enough, don't need intersection observer
2023-01-25 20:37:59 +08:00
Lim Chee Aun
5fb123f228 Need to preserve white space in media descriptions 2023-01-25 00:40:05 +08:00
Lim Chee Aun
28281bb752 New component: Menu
It's time to do this menu thing the right way instead of hacky CSS
2023-01-24 20:56:43 +08:00
Lim Chee Aun
51eaf4f1f2 Replace blue-text buttons on carousel modal 2023-01-24 11:32:33 +08:00
Lim Chee Aun
cdb5435796 Nicer radius for multi-media container 2023-01-23 20:35:15 +08:00
Lim Chee Aun
56b6552d65 Show thread counter for small <Status /> too 2023-01-23 20:34:53 +08:00
Lim Chee Aun
4c05692ef5 This account resolving thingie is getting ridiculous 2023-01-22 20:29:48 +08:00
Lim Chee Aun
1439b22963 New feature: ALT badge in image carousel
Adjusted the layout and fix some styles as well
2023-01-22 16:27:00 +08:00
Lim Chee Aun
9bff95bcec Replace preact-router with react-router
Need more routing powers, hopefully things don't break 🤞
2023-01-21 00:23:59 +08:00
Lim Chee Aun
1b6348fb08 Fix some links that are actually not user-links 2023-01-19 15:51:54 +08:00
Lim Chee Aun
d0880f5c56 Link to status page instead 2023-01-17 16:18:24 +08:00
Lim Chee Aun
0f5764580b Fix bug due to votersCount can be null if multiple=false 2023-01-15 00:17:07 +08:00
Lim Chee Aun
c4236e6de7 New feature: thread numbering 2023-01-10 19:59:02 +08:00
Lim Chee Aun
13c3b8fa3b Finally DRY this saving status code 2023-01-09 19:11:34 +08:00
Lim Chee Aun
8a8dad12c8 Better handling of audio 2023-01-09 01:17:16 +08:00
Lim Chee Aun
33176c5ea7 Have a little fun with CSS variables X JS 2023-01-07 20:38:05 +08:00
Lim Chee Aun
41df88e625 Perf fixes
Turns out, adding an object to states.statuses proxyMap object, re-render ALL statuses
2023-01-07 20:26:23 +08:00
Lim Chee Aun
862107f2e6 Few styling changes to card etc 2023-01-07 20:25:13 +08:00
Lim Chee Aun
ee9bfe6331 Lots of tiny adjustments 2023-01-07 14:45:04 +08:00
Lim Chee Aun
aab9a475e8 Fix text alignment in small card
It's confusing when status can be small/large and card can small/large too
2023-01-07 11:52:23 +08:00
Lim Chee Aun
096712a9dd No lazy loading when loading in the carousel 2023-01-06 22:08:22 +08:00
Lim Chee Aun
6d893967ec Maybe some videos are short 2023-01-06 19:14:47 +08:00
Lim Chee Aun
ca18ea138a Revert Video rewrite because still doesn't work in Mobile Safari
Works in simulator but not the real iPhone
2023-01-06 19:07:04 +08:00
Lim Chee Aun
5c162d211f Rewrite the <video autoplay> hack for Mobile Safari
- Auto animate when in Status page
- Object-fit contain for GIFs in Status page
- Add GIF label on timeline
2023-01-06 18:25:47 +08:00
Lim Chee Aun
599d81f924 Disable card if there's a poll or media attachment
Regardless of the size
2023-01-05 15:28:04 +08:00
Lim Chee Aun
a429da37f4 Don't show card for sensitive/CW content 2023-01-05 13:29:44 +08:00
Lim Chee Aun
04ccf8aca9 Replace @github/relative-time-element with dayjs 2023-01-05 10:50:27 +08:00
Lim Chee Aun
fea7145ac9 The mention is hidden *inside* spoiler text 2023-01-04 17:27:43 +08:00
Lim Chee Aun
e4de6d1d22 Don't need to focus on status after closing carousel
It causes unnecessary scroll
2023-01-03 00:48:16 +08:00
Lim Chee Aun
07dff34e20 Show formatted duration for video media 2023-01-02 14:21:38 +08:00
Lim Chee Aun
951c93a070 Add link to media in carousel modal 2023-01-01 12:28:54 +08:00
Lim Chee Aun
724be17d3e Basic keyboard shortcuts
Esc for carousel modal, Ctrl/Cmd+Enter for Compose field
2022-12-30 21:36:14 +08:00
Lim Chee Aun
9201f7a118 First step in making things focusable 2022-12-30 20:37:57 +08:00
Lim Chee Aun
6ffc40fdf3 Use semantic <article> 2022-12-29 16:12:09 +08:00
Lim Chee Aun
5804ddbdb9 Add all the focuses 2022-12-29 16:11:58 +08:00
Lim Chee Aun
160b535552 Not all cards work in large size
Check the image aspect ratio before converting to large size
2022-12-29 11:34:29 +08:00
Lim Chee Aun
a6196f923f Better styles for card
Show large card for large status, but only when there's no poll and media
2022-12-29 08:57:01 +08:00
Lim Chee Aun
afb1a75f69 Show carousel controls initially 2022-12-28 20:46:38 +08:00
Lim Chee Aun
e32c6c6473 Revert "Delay onClose after swipe"
This reverts commit 0feee7ea93.
2022-12-28 20:35:49 +08:00
Lim Chee Aun
0feee7ea93 Delay onClose after swipe 2022-12-28 20:02:28 +08:00
Lim Chee Aun
7200acc2a7 Swipe down for closing carousel 2022-12-28 19:43:02 +08:00
Lim Chee Aun
86df9fd9f8 Tap media to toggle carousel controls 2022-12-28 19:31:08 +08:00
Lim Chee Aun
422a924844 Make GIF autoplay on Mobile Safari
Only in carousel, and seems like `autoplay` with `muted` ain't working in (P)react.
2022-12-28 14:47:39 +08:00
Lim Chee Aun
fa0ccece32 Handle > 4 medias
- Mastodon now doesn't allow >4, so this is for the future or maybe the forks.
- Using grid for better control on how images lay out
2022-12-28 10:51:57 +08:00
Lim Chee Aun
cf42aab4b7 Experimental language selector in Compose field 2022-12-27 18:09:23 +08:00
Lim Chee Aun
3ac2a45244 Got trolled by @neet 2022-12-27 01:17:04 +08:00
Lim Chee Aun
9278645069 Another attempt at fixing GIF not autoplaying on Mobile Safari 2022-12-26 01:09:19 +08:00
Lim Chee Aun
3daa7e4f9d Fix poll showing NaN when total votes = 0
So 0/0 = NaN
2022-12-25 23:29:25 +08:00
Lim Chee Aun
318c2aeffc Upgrade masto.js to V5
- Fix all breaking changes
- Have to manual remove null/undefined values before creating statuses
- Have to recreate iterator instance if start from scratch because can't pass args in next()
2022-12-25 23:28:55 +08:00
Lim Chee Aun
cf4fbc8553 Make sheet have header and body section 2022-12-25 18:01:01 +08:00
Lim Chee Aun
cff13d53f0 Forgot to revert the optimistism 2022-12-25 13:22:41 +08:00
Lim Chee Aun
c4efc26d62 Attempt to fix video not autoplaying on Mobile Safari 2022-12-24 14:15:34 +08:00
Lim Chee Aun
71514312bf Should be OR
A short video can be treated as GIF.
Loopability is only for <= 60 second video
2022-12-24 10:23:06 +08:00
Lim Chee Aun
55ad4be580 Only show reply badge if not inside mentions 2022-12-24 01:22:25 +08:00
Lim Chee Aun
5944b4fe30 Don't remove status immediately
It'll be too abrupt. Set `_deleted` flag for now, no UI yet.
2022-12-22 22:43:04 +08:00
Lim Chee Aun
37c44c2264 Update poll at point of expiry 2022-12-22 21:52:59 +08:00
Lim Chee Aun
122f6877c9 Fix some accounts not working
All these webfinger/custom-server/moving-instances things are very annoying
2022-12-22 18:25:18 +08:00
Lim Chee Aun
65c2fb3648 Special rounding precision for poll percentage 2022-12-22 14:59:36 +08:00
Lim Chee Aun
9d8286234f Fix the 'thread' badge being jumpy 2022-12-22 12:14:01 +08:00
Lim Chee Aun
3c4c59106a Handle media > 2 taking a lot of vertical space
Also handle media > 4, which I think some instances probably allow
2022-12-22 10:47:45 +08:00
Lim Chee Aun
ade3ebb5ae Experiment: new reply/thread "badges"
Also totally forced one-lined the name text + date at the top of a status
2022-12-22 10:35:39 +08:00
Lim Chee Aun
4e60cae42c Fix spoiler bug 2022-12-22 09:02:22 +08:00
Lim Chee Aun
eba78e3f07 Time to embrace sheets
.box class is just… weird…
2022-12-21 20:00:45 +08:00
Lim Chee Aun
71083b46e2 Add "Refresh" button for polls 2022-12-21 19:46:38 +08:00
Lim Chee Aun
23745d0683 Update poll reactively 2022-12-21 19:29:37 +08:00
Lim Chee Aun
f6e3c979af Fix onClick not a function 2022-12-21 01:18:37 +08:00
Lim Chee Aun
4acb6aa3c2 Subtle badges 2022-12-20 20:17:38 +08:00
Lim Chee Aun
39efda9e38 Track spoilers
Turns out I'm using WeakMap wrong
2022-12-20 19:14:50 +08:00
Lim Chee Aun
1538400dc0 Oops, forgot to put confirm dialog before boosting 2022-12-20 10:09:05 +08:00
Lim Chee Aun
8c97dcc5bc 💅 Aesthetic changes 2022-12-19 13:38:16 +08:00
Lim Chee Aun
96a38e5df1 Bigger check for poll option 2022-12-18 23:06:05 +08:00
Lim Chee Aun
dc37100442 Refactor Carousel 2022-12-18 22:56:00 +08:00
Lim Chee Aun
0b8460cd55 Move things around 2022-12-18 21:10:05 +08:00
Lim Chee Aun
1ffcffa1f4 Try different style for "Read more" 2022-12-18 10:08:44 +08:00
Lim Chee Aun
7c30ba35e4 Show total count for fun 2022-12-18 00:13:56 +08:00
Lim Chee Aun
400bc6f696 Truncate long posts on timeline, show "Read more"
10-line clamping for now
2022-12-17 21:06:51 +08:00
Lim Chee Aun
734a9b2b76 Remove unused code 2022-12-17 19:51:48 +08:00
Lim Chee Aun
5f0d1e8656 Refactor action buttons + optimistic UI 2022-12-17 17:26:41 +08:00
Lim Chee Aun
e6ed64cfd0 Fix auto display: none not working
`this` probably refers to something else
2022-12-17 14:38:21 +08:00
Lim Chee Aun
3ae82d6898 Handle "unknown" media
On mastodon.social, images have type:image, but hachyderm returns type:unknown

Found this when editing a post and add two images, on mastodon.social.
2022-12-16 09:20:30 +08:00
Lim Chee Aun
332dd30c1d Writing logic code is hard 2022-12-15 17:27:28 +08:00
Lim Chee Aun
45b7d42d38 Add lazy loading to all images 2022-12-15 14:19:48 +08:00
Lim Chee Aun
58860c334c Responsive font size based on content length
The shorter, the larger font-size
2022-12-15 00:41:48 +08:00
Lim Chee Aun
72751709df New feature: poll
- More fixes
2022-12-14 21:48:17 +08:00
Lim Chee Aun
121e9176f3 Add style for leading choices
Also make sure the votes percentage doesn't shrink
2022-12-14 19:00:04 +08:00
Lim Chee Aun
b883836f8a Fix percentage count for multiple-choice polls 2022-12-14 17:56:08 +08:00
Lim Chee Aun
410548603f Fix check icon not appearing for own-voted poll choices 2022-12-14 17:11:16 +08:00
Lim Chee Aun
5c6fb7b7c8 Better username lookup 2022-12-14 15:39:20 +08:00
Lim Chee Aun
d4cdf2435f Fix poll percentage showing NaN
This happens when votes are still 0, so 0 divide by 0
2022-12-14 01:48:55 +08:00
Lim Chee Aun
5353a4535a New feature: Edit status!
Get's a bit hacky now
2022-12-12 21:54:31 +08:00
Lim Chee Aun
f7571f6df1 Need to show media attachments even when status size=s
This is because status is optional when there are media attachments

So if the status is empty, there's nothing to show at all lololol
2022-12-12 16:25:55 +08:00
Lim Chee Aun
299b638ac3 Attempt to fix videos not autoplaying on Mobile Safari
Fallback onClick to play in case it really still doesn't autoplay
2022-12-12 10:00:59 +08:00
Lim Chee Aun
87029b43d4 Fix clicking on active carousel dot closes the media modal
Also make the active dot larger
2022-12-12 08:46:50 +08:00
Lim Chee Aun
cb64f5ffda Add "Edited at" meta with Edit History modal
Much refactor, kinda ugly code still.

Edit History design is still very basic.
2022-12-11 21:22:22 +08:00
Lim Chee Aun
fe6bdfdeb3 This .plain conflicted with other styles, so create .plain2
Also… this looks completely different on Mobile Safari (iPhone)...

Maybe due to a better screen...
2022-12-11 15:00:51 +08:00
Lim Chee Aun
aeceb94219 Fix carousel actually not working properly
- Need intersection observer to tell JS that scroll snap happened
- Fix carousel dots not working
- Add fancy background overlay based on image average color
- Disable fade out if open in carousel
2022-12-11 14:35:57 +08:00
Lim Chee Aun
9ad956049b Another attempt to fix GIFV not auto-playing on Mobile Safari 2022-12-11 11:20:24 +08:00
Lim Chee Aun
bc4551583b Special styling for "direct" posts 2022-12-11 10:56:31 +08:00
Lim Chee Aun
5cb65f603d Possible fix for Mobile Safari not autoplaying gifv 2022-12-11 09:45:25 +08:00
Lim Chee Aun
039d4661fb Remove target=_blank from username links
Mobile Safari ignores the click preventDefault and not show the Account popover. Removing target_blank fixes this ignorance

Kinda hacky fix for now
2022-12-11 09:28:02 +08:00
Lim Chee Aun
f89ae6cdcd Try add description to card 2022-12-11 00:50:49 +08:00
Lim Chee Aun
bcf4fe6e5c Show domain on first line, chop off "www" 2022-12-11 00:20:23 +08:00
Lim Chee Aun
b69d9f3fa8 Manage to make the top carousel controls hide-able too 2022-12-10 23:39:12 +08:00
Lim Chee Aun
80b3432ccb Carousel very buggy on mobile. Add close button. 2022-12-10 22:27:00 +08:00
Lim Chee Aun
5797b9bc38 Only need focal positioning if not show original media 2022-12-10 21:58:40 +08:00
Lim Chee Aun
2fa86980c0 Should be .u-url, not .mention 2022-12-10 19:16:57 +08:00
Lim Chee Aun
33c88d648a Loading/disabled state for actions (boost, favourite, bookmark)
Also catch any errors and alert them
2022-12-10 18:23:11 +08:00
Lim Chee Aun
2b9390a0a1 Initial commit 2022-12-10 17:14:48 +08:00