kopia lustrzana https://github.com/nolanlawson/pinafore
				
				
				
			
							rodzic
							
								
									742a76b4dd
								
							
						
					
					
						commit
						870fa0e93c
					
				| 
						 | 
				
			
			@ -41,11 +41,12 @@
 | 
			
		|||
      <li><kbd>f</kbd> to favorite</li>
 | 
			
		||||
      <li><kbd>b</kbd> to boost</li>
 | 
			
		||||
      <li><kbd>r</kbd> to reply</li>
 | 
			
		||||
      <li><kbd>i</kbd> to open images, video, or audio</li>
 | 
			
		||||
      <li><kbd>y</kbd> to show or hide sensitive media</li>
 | 
			
		||||
      <li><kbd>m</kbd> to mention the author</li>
 | 
			
		||||
      <li><kbd>p</kbd> to open the author's profile</li>
 | 
			
		||||
      <li><kbd>l</kbd> to open the card's link in a new tab</li>
 | 
			
		||||
      <li><kbd>x</kbd> to show or hide text behind content warning</li>
 | 
			
		||||
      <li><kbd>y</kbd> to show or hide sensitive media</li>
 | 
			
		||||
    </ul>
 | 
			
		||||
  </div>
 | 
			
		||||
  <h2>Media</h2>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,6 +40,9 @@
 | 
			
		|||
{:else}
 | 
			
		||||
  <MediaAttachments {mediaAttachments} {sensitive} {sensitiveShown} {uuid} />
 | 
			
		||||
{/if}
 | 
			
		||||
{#if enableShortcuts}
 | 
			
		||||
  <Shortcut scope={shortcutScope} key="i" on:pressed="showFirstMedia()" />
 | 
			
		||||
{/if}
 | 
			
		||||
<style>
 | 
			
		||||
  .status-sensitive-media-container {
 | 
			
		||||
    grid-area: media;
 | 
			
		||||
| 
						 | 
				
			
			@ -167,6 +170,7 @@
 | 
			
		|||
  import { store } from '../../_store/store'
 | 
			
		||||
  import { registerClickDelegate } from '../../_utils/delegate'
 | 
			
		||||
  import { classname } from '../../_utils/classname'
 | 
			
		||||
  import { importShowMediaDialog } from '../dialog/asyncDialogs/importShowMediaDialog'
 | 
			
		||||
 | 
			
		||||
  export default {
 | 
			
		||||
    oncreate () {
 | 
			
		||||
| 
						 | 
				
			
			@ -229,6 +233,11 @@
 | 
			
		|||
          })
 | 
			
		||||
        }
 | 
			
		||||
        return true
 | 
			
		||||
      },
 | 
			
		||||
      async showFirstMedia () {
 | 
			
		||||
        const { mediaAttachments } = this.get()
 | 
			
		||||
        const showMediaDialog = await importShowMediaDialog()
 | 
			
		||||
        showMediaDialog(mediaAttachments, 0)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,7 @@ import {
 | 
			
		|||
  getNthStatusSpoiler,
 | 
			
		||||
  getUrl, modalDialog,
 | 
			
		||||
  scrollToStatus,
 | 
			
		||||
  isNthStatusActive, getActiveElementRectTop, scrollToTop, isActiveStatusPinned
 | 
			
		||||
  isNthStatusActive, getActiveElementRectTop, scrollToTop, isActiveStatusPinned, getFirstModalMedia
 | 
			
		||||
} from '../utils'
 | 
			
		||||
import { homeTimeline } from '../fixtures'
 | 
			
		||||
import { loginAsFoobar } from '../roles'
 | 
			
		||||
| 
						 | 
				
			
			@ -95,7 +95,7 @@ test('Shortcut x shows/hides spoilers', async t => {
 | 
			
		|||
    .expect(getNthStatusContent(1 + idx).hasClass('shown')).notOk()
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
test('Shortcut y shows/hides sensitive image', async t => {
 | 
			
		||||
test('Shortcut y shows/hides sensitive image, i opens', async t => {
 | 
			
		||||
  const idx = homeTimeline.findIndex(_ => _.content === "here's a secret kitten")
 | 
			
		||||
  await loginAsFoobar(t)
 | 
			
		||||
  await t
 | 
			
		||||
| 
						 | 
				
			
			@ -109,6 +109,8 @@ test('Shortcut y shows/hides sensitive image', async t => {
 | 
			
		|||
    .expect(getNthStatusMediaImg(1 + idx).getAttribute('src')).match(/^http:\/\//)
 | 
			
		||||
    .pressKey('y')
 | 
			
		||||
    .expect(getNthStatusMediaImg(1 + idx).getAttribute('src')).match(/^blob:http:\/\/localhost/)
 | 
			
		||||
    .pressKey('i')
 | 
			
		||||
    .expect(getFirstModalMedia().getAttribute('alt')).eql('kitten')
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
test('Shortcut f toggles favorite status', async t => {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -301,6 +301,10 @@ export const getScrollTop = exec(() => {
 | 
			
		|||
  return document.scrollingElement.scrollTop || 0
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
export function getFirstModalMedia () {
 | 
			
		||||
  return $('.modal-dialog .media-container img')
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getNthMediaAltInput (n) {
 | 
			
		||||
  return $(`.compose-box .compose-media:nth-child(${n}) .compose-media-alt textarea`)
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue