Move from toot to post
This commit is contained in:
parent
a7eaec3391
commit
1d48a247c5
|
@ -8,15 +8,15 @@ This will walk you through the basic usage of Semaphore and its major difference
|
|||
|
||||
## Home page
|
||||
|
||||
The home page is both where you write toots and where you read your home timeline:
|
||||
The home page is both where you write posts and where you read your home timeline:
|
||||
|
||||
![Screenshot of home page](https://github.com/NickColley/semaphore/blob/main/docs/Screenshot1.png)
|
||||
|
||||
When you scroll down, the "toot" button transforms into a "compose" button:
|
||||
When you scroll down, the "post" button transforms into a "compose" button:
|
||||
|
||||
![Screenshot showing home page scrolled down](https://github.com/NickColley/semaphore/blob/main/docs/Screenshot2.png)
|
||||
|
||||
If you press this compose button, you can toot anywhere in your home timeline.
|
||||
If you press this compose button, you can post anywhere in your home timeline.
|
||||
|
||||
![Screenshot showing compose box in a modal dialog](https://github.com/NickColley/semaphore/blob/main/docs/Screenshot3.png)
|
||||
|
||||
|
|
|
@ -187,7 +187,7 @@ export default {
|
|||
pinPage: 'Hefte {label} an',
|
||||
// Status composition
|
||||
composeStatus: 'Tröt erstellen',
|
||||
postStatus: 'Tröt!',
|
||||
postStatus: 'Post',
|
||||
contentWarning: 'Inhaltswarnung',
|
||||
dropToUpload: 'Fallenlassen zum Hochladen',
|
||||
invalidFileType: 'Ungültiger Dateityp',
|
||||
|
|
|
@ -27,7 +27,7 @@ export default {
|
|||
`,
|
||||
// Manifest
|
||||
longAppName: 'Semaphore for Mastodon',
|
||||
newStatus: 'New toot',
|
||||
newStatus: 'New post',
|
||||
// Generic UI
|
||||
loading: 'Loading',
|
||||
okay: 'OK',
|
||||
|
@ -66,7 +66,7 @@ export default {
|
|||
local: 'Local',
|
||||
notifications: 'Notifications',
|
||||
mutedUsers: 'Muted users',
|
||||
pinnedStatuses: 'Pinned toots',
|
||||
pinnedStatuses: 'Pinned posts',
|
||||
followRequests: 'Follow requests',
|
||||
followRequestsLabel: `Follow requests {hasFollowRequests, select,
|
||||
true {({count})}
|
||||
|
@ -102,7 +102,7 @@ export default {
|
|||
listNotLoggedIn: 'A list will appear here when logged in.',
|
||||
notificationsNotLoggedIn: 'Your notifications will appear here when logged in.',
|
||||
notificationMentionsNotLoggedIn: 'Your notification mentions will appear here when logged in.',
|
||||
statusNotLoggedIn: 'A toot thread will appear here when logged in.',
|
||||
statusNotLoggedIn: 'A post thread will appear here when logged in.',
|
||||
tagNotLoggedIn: 'A hashtag timeline will appear here when logged in.',
|
||||
// Notification subpages
|
||||
filters: 'Filters',
|
||||
|
@ -132,7 +132,7 @@ export default {
|
|||
}
|
||||
to switch columns
|
||||
</li>
|
||||
<li><kbd>7</kbd> or <kbd>c</kbd> to compose a new toot</li>
|
||||
<li><kbd>7</kbd> or <kbd>c</kbd> to compose a new post</li>
|
||||
<li><kbd>s</kbd> or <kbd>/</kbd> to search</li>
|
||||
<li><kbd>g</kbd> + <kbd>h</kbd> to go home</li>
|
||||
<li><kbd>g</kbd> + <kbd>n</kbd> to go to notifications</li>
|
||||
|
@ -144,8 +144,8 @@ export default {
|
|||
<li><kbd>Backspace</kbd> to go back, close dialogs</li>
|
||||
`,
|
||||
timelineHotkeys: `
|
||||
<li><kbd>j</kbd> or <kbd>↓</kbd> to activate the next toot</li>
|
||||
<li><kbd>k</kbd> or <kbd>↑</kbd> to activate the previous toot</li>
|
||||
<li><kbd>j</kbd> or <kbd>↓</kbd> to activate the next post</li>
|
||||
<li><kbd>k</kbd> or <kbd>↑</kbd> to activate the previous post</li>
|
||||
<li><kbd>.</kbd> to show more and scroll to top</li>
|
||||
<li><kbd>o</kbd> to open</li>
|
||||
<li><kbd>f</kbd> to favorite</li>
|
||||
|
@ -192,8 +192,8 @@ export default {
|
|||
}`,
|
||||
pinPage: 'Pin {label}',
|
||||
// Status composition
|
||||
composeStatus: 'Compose toot',
|
||||
postStatus: 'Toot!',
|
||||
composeStatus: 'Compose post',
|
||||
postStatus: 'Post',
|
||||
contentWarning: 'Content warning',
|
||||
dropToUpload: 'Drop to upload',
|
||||
invalidFileType: 'Invalid file type',
|
||||
|
@ -275,25 +275,25 @@ export default {
|
|||
additionalComments: 'Additional comments',
|
||||
forwardDescription: 'Forward to the moderators of {instance} as well?',
|
||||
forwardLabel: 'Forward to {instance}',
|
||||
unableToLoadStatuses: 'Unable to load recent toots: {error}',
|
||||
unableToLoadStatuses: 'Unable to load recent posts: {error}',
|
||||
report: 'Report',
|
||||
noContent: '(No content)',
|
||||
noStatuses: 'No toots to report',
|
||||
noStatuses: 'No posts to report',
|
||||
// Status options
|
||||
unpinFromProfile: 'Unpin from profile',
|
||||
pinToProfile: 'Pin to profile',
|
||||
muteConversation: 'Mute conversation',
|
||||
unmuteConversation: 'Unmute conversation',
|
||||
bookmarkStatus: 'Bookmark toot',
|
||||
unbookmarkStatus: 'Unbookmark toot',
|
||||
bookmarkStatus: 'Bookmark post',
|
||||
unbookmarkStatus: 'Unbookmark post',
|
||||
deleteAndRedraft: 'Delete and redraft',
|
||||
reportStatus: 'Report toot',
|
||||
shareStatus: 'Share toot',
|
||||
copyLinkToStatus: 'Copy link to toot',
|
||||
reportStatus: 'Report post',
|
||||
shareStatus: 'Share post',
|
||||
copyLinkToStatus: 'Copy link to post',
|
||||
// Account profile
|
||||
profileForAccount: 'Profile for {account}',
|
||||
statisticsAndMoreOptions: 'Stats and more options',
|
||||
statuses: 'Toots',
|
||||
statuses: 'posts',
|
||||
follows: 'Follows',
|
||||
followers: 'Followers',
|
||||
moreOptions: 'More options',
|
||||
|
@ -373,10 +373,10 @@ export default {
|
|||
largeMedia: 'Show large inline images and videos',
|
||||
autoplayGifs: 'Autoplay animated GIFs',
|
||||
hideCards: 'Hide link preview cards',
|
||||
underlineLinks: 'Underline links in toots and profiles',
|
||||
underlineLinks: 'Underline links in posts and profiles',
|
||||
accessibility: 'Accessibility',
|
||||
reduceMotion: 'Reduce motion in UI animations',
|
||||
disableTappable: 'Disable tappable area on entire toot',
|
||||
disableTappable: 'Disable tappable area on entire post',
|
||||
removeEmoji: 'Remove emoji from user display names',
|
||||
shortAria: 'Use short article ARIA labels',
|
||||
theme: 'Theme',
|
||||
|
@ -416,7 +416,7 @@ export default {
|
|||
// to see a description. It's hard to properly internationalize, so we just break up the strings.
|
||||
disableInfiniteScrollPre: 'Disable',
|
||||
disableInfiniteScrollText: 'infinite scroll',
|
||||
disableInfiniteScrollDescription: `When infinite scroll is disabled, new toots will not automatically appear at
|
||||
disableInfiniteScrollDescription: `When infinite scroll is disabled, new posts will not automatically appear at
|
||||
the bottom or top of the timeline. Instead, buttons will allow you to
|
||||
load more content on demand.`,
|
||||
disableInfiniteScrollPost: '',
|
||||
|
@ -475,7 +475,7 @@ export default {
|
|||
newFollowers: 'New followers',
|
||||
reblogs: 'Boosts',
|
||||
pollResults: 'Poll results',
|
||||
subscriptions: 'Subscribed toots',
|
||||
subscriptions: 'Subscribed posts',
|
||||
needToReauthenticate: 'You need to reauthenticate in order to enable push notification. Log out of {instance}?',
|
||||
failedToUpdatePush: 'Failed to update push notification settings: {error}',
|
||||
// Themes
|
||||
|
@ -509,11 +509,11 @@ export default {
|
|||
one {1 time}
|
||||
other {{count} times}
|
||||
}`,
|
||||
pinnedStatus: 'Pinned toot',
|
||||
rebloggedYou: 'boosted your toot',
|
||||
favoritedYou: 'favorited your toot',
|
||||
pinnedStatus: 'Pinned post',
|
||||
rebloggedYou: 'boosted your post',
|
||||
favoritedYou: 'favorited your post',
|
||||
followedYou: 'followed you',
|
||||
edited: 'edited their toot',
|
||||
edited: 'edited their post',
|
||||
requestedFollow: 'requested to follow you',
|
||||
reported: 'filed a report',
|
||||
signedUp: 'signed up',
|
||||
|
@ -529,14 +529,14 @@ export default {
|
|||
clickToShowSensitive: 'Sensitive content. Click to show.',
|
||||
longPost: 'Long post',
|
||||
// Accessible status labels
|
||||
accountRebloggedYou: '{account} boosted your toot',
|
||||
accountFavoritedYou: '{account} favorited your toot',
|
||||
accountEdited: '{account} edited their toot',
|
||||
accountRebloggedYou: '{account} boosted your post',
|
||||
accountFavoritedYou: '{account} favorited your post',
|
||||
accountEdited: '{account} edited their post',
|
||||
rebloggedByAccount: 'Boosted by {account}',
|
||||
contentWarningContent: 'Content warning: {spoiler}',
|
||||
hasMedia: 'has media',
|
||||
hasPoll: 'has poll',
|
||||
shortStatusLabel: '{privacy} toot by {account}',
|
||||
shortStatusLabel: '{privacy} post by {account}',
|
||||
// Privacy types
|
||||
public: 'Public',
|
||||
unlisted: 'Unlisted',
|
||||
|
@ -590,21 +590,21 @@ export default {
|
|||
showCountMore: 'Show {count} more',
|
||||
nothingToShow: 'Nothing to show.',
|
||||
// status thread page
|
||||
statusThreadPage: 'Toot thread page',
|
||||
status: 'Toot',
|
||||
statusThreadPage: 'post thread page',
|
||||
status: 'post',
|
||||
// toast messages
|
||||
blockedAccount: 'Blocked account',
|
||||
unblockedAccount: 'Unblocked account',
|
||||
unableToBlock: 'Unable to block account: {error}',
|
||||
unableToUnblock: 'Unable to unblock account: {error}',
|
||||
bookmarkedStatus: 'Bookmarked toot',
|
||||
unbookmarkedStatus: 'Unbookmarked toot',
|
||||
bookmarkedStatus: 'Bookmarked post',
|
||||
unbookmarkedStatus: 'Unbookmarked post',
|
||||
unableToBookmark: 'Unable to bookmark: {error}',
|
||||
unableToUnbookmark: 'Unable to unbookmark: {error}',
|
||||
cannotPostOffline: 'You cannot post while offline',
|
||||
unableToPost: 'Unable to post toot: {error}',
|
||||
statusDeleted: 'Toot deleted',
|
||||
unableToDelete: 'Unable to delete toot: {error}',
|
||||
unableToPost: 'Unable to post post: {error}',
|
||||
statusDeleted: 'post deleted',
|
||||
unableToDelete: 'Unable to delete post: {error}',
|
||||
cannotFavoriteOffline: 'You cannot favorite while offline',
|
||||
cannotUnfavoriteOffline: 'You cannot unfavorite while offline',
|
||||
unableToFavorite: 'Unable to favorite: {error}',
|
||||
|
@ -624,9 +624,9 @@ export default {
|
|||
unmutedConversation: 'Unmuted conversation',
|
||||
unableToMuteConversation: 'Unable to mute conversation: {error}',
|
||||
unableToUnmuteConversation: 'Unable to unmute conversation: {error}',
|
||||
unpinnedStatus: 'Unpinned toot',
|
||||
unableToPinStatus: 'Unable to pin toot: {error}',
|
||||
unableToUnpinStatus: 'Unable to unpin toot: {error}',
|
||||
unpinnedStatus: 'Unpinned post',
|
||||
unableToPinStatus: 'Unable to pin post: {error}',
|
||||
unableToUnpinStatus: 'Unable to unpin post: {error}',
|
||||
unableToRefreshPoll: 'Unable to refresh poll: {error}',
|
||||
unableToVoteInPoll: 'Unable to vote in poll: {error}',
|
||||
cannotReblogOffline: 'You cannot boost while offline.',
|
||||
|
@ -652,7 +652,7 @@ export default {
|
|||
unableToSubscribe: 'Unable to subscribe: {error}',
|
||||
unableToUnsubscribe: 'Unable to unsubscribe: {error}',
|
||||
showingOfflineContent: 'Internet request failed. Showing offline content.',
|
||||
youAreOffline: 'You seem to be offline. You can still read toots while offline.',
|
||||
youAreOffline: 'You seem to be offline. You can still read posts while offline.',
|
||||
// Snackbar UI
|
||||
updateAvailable: 'App update available.',
|
||||
// Word/phrase filters
|
||||
|
|
|
@ -193,7 +193,7 @@ export default {
|
|||
pinPage: 'Закрепить {label}',
|
||||
// Status composition
|
||||
composeStatus: 'Создать запись',
|
||||
postStatus: 'Опубликовать!',
|
||||
postStatus2: 'Опубликовать!',
|
||||
contentWarning: 'Предупреждение о содержимом',
|
||||
dropToUpload: 'Перетащите для загрузки',
|
||||
invalidFileType: 'Неверный тип файла',
|
||||
|
|
|
@ -6,7 +6,7 @@ import { tryToFocusElement } from '../_utils/tryToFocusElement.js'
|
|||
|
||||
export function showMoreAndScrollToTop () {
|
||||
// Similar to Twitter, pressing "." will click the "show more" button and select
|
||||
// the first toot.
|
||||
// the first post.
|
||||
showMoreItemsForCurrentTimeline()
|
||||
const {
|
||||
currentInstance,
|
||||
|
|
|
@ -200,7 +200,7 @@
|
|||
}
|
||||
// The reason we add a scheduleIdleTask delay here is because we also use scheduleIdleTask
|
||||
// in ComposeInput.html to debounce the input events. If the user is very fast at typing
|
||||
// at their keyboard and quickly presses Ctrl+Enter or the "Toot" button then there could
|
||||
// at their keyboard and quickly presses Ctrl+Enter or the "Post" button then there could
|
||||
// be a race condition where not all of their status is posted.
|
||||
this.set({ aboutToPostStatus: true })
|
||||
scheduleIdleTask(() => {
|
||||
|
|
|
@ -108,7 +108,7 @@
|
|||
textarea.selectionStart = textarea.selectionEnd = newSelectionStart
|
||||
}
|
||||
// this next autosize is required to resize after
|
||||
// the user clicks the "toot" button
|
||||
// the user clicks the "post" button
|
||||
mark('autosize.update()')
|
||||
autosize.update(textarea)
|
||||
stop('autosize.update()')
|
||||
|
@ -173,7 +173,7 @@
|
|||
},
|
||||
onKeydown (e) {
|
||||
const { keyCode } = e
|
||||
// ctrl or cmd (on macs) was pressed; ctrl-enter means post a toot
|
||||
// ctrl or cmd (on macs) was pressed; ctrl-enter means create a post
|
||||
const ctrlPressed = e.getModifierState('Control') || e.getModifierState('Meta')
|
||||
switch (keyCode) {
|
||||
case 9: { // tab
|
||||
|
|
|
@ -63,7 +63,7 @@
|
|||
// so we should launch a new compose dialog
|
||||
this.showDialog()
|
||||
} else {
|
||||
// else we're actually posting a new toot, let our parent know
|
||||
// else we're actually posting a new post, let our parent know
|
||||
this.fire('postAction')
|
||||
}
|
||||
},
|
||||
|
|
|
@ -18,12 +18,12 @@
|
|||
[
|
||||
{
|
||||
name: '',
|
||||
label: 'Toots',
|
||||
label: 'Posts',
|
||||
href: `/accounts/${account.id}`
|
||||
},
|
||||
{
|
||||
name: 'with_replies',
|
||||
label: 'Toots and replies',
|
||||
label: 'Posts and replies',
|
||||
href: `/accounts/${account.id}/with_replies`
|
||||
},
|
||||
{
|
||||
|
|
|
@ -119,8 +119,8 @@
|
|||
if (!activeElement) {
|
||||
return null
|
||||
}
|
||||
// The user might be focused on an element inside a toot. We want to
|
||||
// move relative to that toot.
|
||||
// The user might be focused on an element inside a post. We want to
|
||||
// move relative to that post.
|
||||
const activeArticle = activeElement.closest('article')
|
||||
if (!activeArticle) {
|
||||
return null
|
||||
|
|
|
@ -220,7 +220,7 @@
|
|||
sensitivesShown[uuid] = !sensitivesShown[uuid]
|
||||
this.store.set({ sensitivesShown })
|
||||
this.fire('recalculateHeight')
|
||||
// Only change focus for clicks, not for hotkeys. It's weird if, when the entire toot
|
||||
// Only change focus for clicks, not for hotkeys. It's weird if, when the entire post
|
||||
// is focused and you press "y", that the focus changes to the sensitive media button.
|
||||
if (changeFocus) {
|
||||
requestAnimationFrame(() => {
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
<DynamicPageBanner title="{intl.pinnedStatuses}" icon="#fa-thumb-tack" />
|
||||
{#if $isUserLoggedIn }
|
||||
<div class="pinned-toots-page">
|
||||
<div class="pinned-posts-page">
|
||||
{#if loading}
|
||||
<LoadingPage />
|
||||
{:elseif statuses && statuses.length}
|
||||
<ul class="pinned-toots-results">
|
||||
<ul class="pinned-posts-results">
|
||||
{#each statuses as status, index}
|
||||
<StatusSearchResult {status} {index} length={statuses.length} />
|
||||
{/each}
|
||||
|
@ -13,18 +13,18 @@
|
|||
</div>
|
||||
{/if}
|
||||
<style>
|
||||
.pinned-toots-page {
|
||||
.pinned-posts-page {
|
||||
padding: 20px 20px;
|
||||
position: relative;
|
||||
}
|
||||
.pinned-toots-results {
|
||||
.pinned-posts-results {
|
||||
list-style: none;
|
||||
box-sizing: border-box;
|
||||
border: 1px solid var(--main-border);
|
||||
border-radius: 2px;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.pinned-toots-page {
|
||||
.pinned-posts-page {
|
||||
padding: 20px 10px;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue