Merge branch 'develop'
This commit is contained in:
		
						commit
						1b956af855
					
				
					 45 changed files with 226 additions and 143 deletions
				
			
		|  | @ -7,6 +7,13 @@ | |||
| 
 | ||||
| --> | ||||
| 
 | ||||
| ## 12.100.2 (2021/12/18) | ||||
| 
 | ||||
| ### Bugfixes | ||||
| - クライアント: Deckカラムの増減がページをリロードするまで正しく反映されない問題を修正 | ||||
| - クライアント: 一部のコンポーネントが裏に隠れるのを修正 | ||||
| - クライアント: カスタム絵文字一覧ページの負荷が高いのを修正 | ||||
| 
 | ||||
| ## 12.100.1 (2021/12/17) | ||||
| 
 | ||||
| ### Bugfixes | ||||
|  |  | |||
|  | @ -106,7 +106,6 @@ clickToShow: "اضغط للعرض" | |||
| sensitive: "محتوى حساس" | ||||
| add: "إضافة" | ||||
| reaction: "التفاعلات" | ||||
| reactionSettingDescription: "اختر التفاعلات المفضلة التي تريد تثبيتها في منتقي التفاعلات." | ||||
| reactionSettingDescription2: "اسحب لترتيب ، انقر للحذف ، استخدم \"+\" للإضافة." | ||||
| rememberNoteVisibility: "تذكر إعدادت مدى رؤية الملاحظات" | ||||
| attachCancel: "أزل المرفق" | ||||
|  |  | |||
|  | @ -88,7 +88,6 @@ clickToShow: "Klikněte pro zobrazení" | |||
| sensitive: "NSFW" | ||||
| add: "Přidat" | ||||
| reaction: "Reakce" | ||||
| reactionSettingDescription: "Vyberte Vaší oblíbenou reakci, kterou chcete připnout ve výběru." | ||||
| reactionSettingDescription2: "Přetažením změníte pořadí, kliknutím smažete, zmáčkněte \"+\" k přidání" | ||||
| rememberNoteVisibility: "Zapamatovat nastavení zobrazení poznámky" | ||||
| attachCancel: "Odstranit přílohu" | ||||
|  |  | |||
|  | @ -106,7 +106,7 @@ clickToShow: "Zum Anzeigen anklicken" | |||
| sensitive: "NSFW" | ||||
| add: "Hinzufügen" | ||||
| reaction: "Reaktionen" | ||||
| reactionSettingDescription: "Wähle die Reaktionen aus, die in der Reaktionsauswahl angezeigt werden sollen." | ||||
| reactionSetting: "In der Reaktionsauswahl anzuzeigende Reaktionen" | ||||
| reactionSettingDescription2: "Ziehe zum Anordnen, klicke zum Löschen, drücke + zum Hinzufügen" | ||||
| rememberNoteVisibility: "Notizsichtbarkeit merken" | ||||
| attachCancel: "Anhang entfernen" | ||||
|  | @ -685,6 +685,7 @@ center: "Mitte" | |||
| wide: "Breit" | ||||
| narrow: "Schmal" | ||||
| reloadToApplySetting: "Diese Einstellung tritt nach einer Aktualisierung der Seite in Kraft. Jetzt aktualisieren?" | ||||
| needReloadToApply: "Diese Einstellung tritt nach einer Aktualisierung der Seite in Kraft." | ||||
| showTitlebar: "Titelleiste anzeigen" | ||||
| clearCache: "Cache leeren" | ||||
| onlineUsersCount: "{n} Benutzer sind online" | ||||
|  | @ -813,6 +814,10 @@ deleteAccountConfirm: "Dein Benutzerkonto wird unwiderruflich gelöscht. Trotzde | |||
| incorrectPassword: "Falsches Passwort." | ||||
| voteConfirm: "Wirklich für \"{choice}\" abstimmen?" | ||||
| hide: "Inhalt verbergen" | ||||
| leaveGroup: "Gruppe verlassen" | ||||
| leaveGroupConfirm: "Möchtest du \"{name}\" wirklich verlassen?" | ||||
| useDrawerReactionPickerForMobile: "Auf mobilen Geräten ausfahrbare Reaktionsauswahl anzeigen" | ||||
| welcomeBackWithName: "Willkommen zurück, {name}" | ||||
| _emailUnavailable: | ||||
|   used: "Diese Email-Adresse wird bereits verwendet" | ||||
|   format: "Das Format dieser Email-Adresse ist ungültig" | ||||
|  |  | |||
|  | @ -106,7 +106,7 @@ clickToShow: "Click to show" | |||
| sensitive: "NSFW" | ||||
| add: "Add" | ||||
| reaction: "Reactions" | ||||
| reactionSettingDescription: "Configure which reactions you want to display in the reaction picker." | ||||
| reactionSetting: "Reactions to show in the reaction picker" | ||||
| reactionSettingDescription2: "Drag to reorder, Click to delete, Press \"+\" to add" | ||||
| rememberNoteVisibility: "Remember note visibility settings" | ||||
| attachCancel: "Remove attachment" | ||||
|  | @ -685,6 +685,7 @@ center: "Center" | |||
| wide: "Wide" | ||||
| narrow: "Narrow" | ||||
| reloadToApplySetting: "This setting will only apply after a page reload. Reload now?" | ||||
| needReloadToApply: "This setting will only apply after a page reload." | ||||
| showTitlebar: "Show title bar" | ||||
| clearCache: "Clear cache" | ||||
| onlineUsersCount: "{n} users are online" | ||||
|  | @ -812,6 +813,10 @@ deleteAccountConfirm: "This will irreversibly delete your account. Proceed?" | |||
| incorrectPassword: "Incorrect password." | ||||
| voteConfirm: "Confirm your vote for \"{choice}\"?" | ||||
| hide: "Hide" | ||||
| leaveGroup: "Leave Group" | ||||
| leaveGroupConfirm: "Are you sure you want to leave \"{name}\"?" | ||||
| useDrawerReactionPickerForMobile: "Display reaction picker as drawer on mobile" | ||||
| welcomeBackWithName: "Welcome back, {name}" | ||||
| _emailUnavailable: | ||||
|   used: "This email address is already being used" | ||||
|   format: "The format of this email address is invalid" | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ | |||
| _lang_: "Esperanto" | ||||
| headlineMisskey: "Reto konektita per notoj" | ||||
| introMisskey: "Bonvenon! Misskey estas malfermitkoda malcentraliza etbloga servo.\nKreu \"noto\"n por diskonigi nunan aferon, aŭ por paroli vian penson al ĉiuj ĉirkaŭ vi. 📡\nLa funkcion \"reago\" ebligas esprimi rapide vian senton pri la noto de la alia en la Fediverso. 👍\nBonvole esploru novan mondon. 🚀" | ||||
| monthAndDay: "la {day}a de la {month}a monato" | ||||
| monthAndDay: "La {day}a de la {month}a monato" | ||||
| search: "Serĉi" | ||||
| notifications: "Sciigoj" | ||||
| username: "Uzantnomo" | ||||
|  | @ -67,13 +67,13 @@ driveFileDeleteConfirm: "Ĉu vi certas, ke vi volas forviŝi la dosieron \"{name | |||
| unfollowConfirm: "Ĉu vi certas, ke vi volas ĉesi sekvi {name}?" | ||||
| lists: "Listoj" | ||||
| noLists: "Neniu listo" | ||||
| note: "Sendi" | ||||
| note: "Noti" | ||||
| notes: "Notoj" | ||||
| following: "Sekvatoj" | ||||
| followers: "Sekvantoj" | ||||
| followsYou: "Sekvas vin" | ||||
| createList: "Krei liston" | ||||
| manageLists: "Administri liston" | ||||
| manageLists: "Bonteni liston" | ||||
| error: "Eraro" | ||||
| somethingHappened: "Problemo okazis" | ||||
| retry: "Provi denove" | ||||
|  | @ -101,7 +101,6 @@ clickToShow: "Klaku por malkaŝu" | |||
| sensitive: "Enhavo ne estas deca por laborejo (NSFW)" | ||||
| add: "Aldoni" | ||||
| reaction: "Reagoj" | ||||
| reactionSettingDescription: "Agordi la reagojn kiujn vi volas montrigi prefere ĉe la elektilo de reagoj" | ||||
| rememberNoteVisibility: "Rememori la agordon de videbleco de la laste sendita" | ||||
| attachCancel: "Deigi aldonaĵon" | ||||
| markAsSensitive: "Troviĝi NSFW" | ||||
|  | @ -129,8 +128,8 @@ emojiUrl: "URL de la emoĵio" | |||
| addEmoji: "Aldoni emoĵion" | ||||
| settingGuide: "Agordaj rekomendoj" | ||||
| cacheRemoteFiles: "Stapli forajn dosierojn" | ||||
| flagAsBot: "Agordi por robota uzanto" | ||||
| flagAsCat: "Agordi por kata uzanto" | ||||
| flagAsBot: "Marki kiel uzata de roboto" | ||||
| flagAsCat: "Agordi kiel kat-iĝa" | ||||
| flagAsCatDescription: "Se vi estas kato, ebligu la agordon." | ||||
| autoAcceptFollowed: "Aŭtomate akcepti la peton de sekvado far uzantoj kiujn vi sekvas" | ||||
| addAccount: "Aldoni konton" | ||||
|  | @ -280,7 +279,7 @@ normal: "Normala" | |||
| instanceName: "Nomo de la nodo" | ||||
| instanceDescription: "Priskribo de la nodo " | ||||
| maintainerName: "Nomo de la administranto" | ||||
| maintainerEmail: "Retpoŝtadreso de la administranto" | ||||
| maintainerEmail: "Retpoŝta adreso de la administranto" | ||||
| tosUrl: "URL de kondiĉoj de uzado" | ||||
| thisYear: "Ĉi-jare" | ||||
| thisMonth: "Ĉi-monate" | ||||
|  | @ -331,10 +330,10 @@ silenceConfirm: "Ĉu vi certas ke vi volas mutigi la uzanton?" | |||
| unsilence: "Malmutigi" | ||||
| unsilenceConfirm: "Ĉu vi certas ke vi volas malmutigi la uzanton?" | ||||
| popularUsers: "Popularaj uzantoj" | ||||
| recentlyUpdatedUsers: "Uzantoj kiuj lastatempe sendis noton" | ||||
| recentlyRegisteredUsers: "Novaliĝintaj uzantoj" | ||||
| recentlyDiscoveredUsers: "Lastatempe trovitaj uzantoj" | ||||
| exploreUsersCount: "Tio estas {count} uzantoj" | ||||
| recentlyUpdatedUsers: "Lastatempe afiŝintaj uzantoj" | ||||
| recentlyRegisteredUsers: "Lastatempe aniĝintaj uzantoj" | ||||
| recentlyDiscoveredUsers: "Lastatempe eltrovitaj uzantoj" | ||||
| exploreUsersCount: "Jen {count} uzantoj" | ||||
| exploreFediverse: "Esplori la Fediverson" | ||||
| popularTags: "Popularaj kradvortoj" | ||||
| userList: "Listoj" | ||||
|  | @ -348,7 +347,7 @@ nUsersMentioned: "{n} uzanto(j) menciis" | |||
| securityKey: "Sekureca ŝlosilo" | ||||
| securityKeyName: "Nomo de la ŝlosilo" | ||||
| registerSecurityKey: "Registri ŝlosilon de sekureco" | ||||
| lastUsed: "Plej malnove uzita" | ||||
| lastUsed: "La plej malnove uzita" | ||||
| unregister: "Malregistriĝi" | ||||
| passwordLessLogin: "Saluti sen pasvorto" | ||||
| resetPassword: "Restarigi pasvorton" | ||||
|  | @ -359,6 +358,7 @@ notFound: "Ne trovita" | |||
| uploadFolder: "Dosierujo implicita por alŝuto" | ||||
| cacheClear: "Malplenigi staplon" | ||||
| markAsReadAllNotifications: "Marki ĉiujn sciigojn kiel legita" | ||||
| markAsReadAllTalkMessages: "Marki ĉiujn retbabiladojn kiel legita" | ||||
| help: "Manlibro de uzado" | ||||
| inputMessageHere: "Entajpu masaĝo tie ĉi" | ||||
| close: "Fermi" | ||||
|  | @ -381,7 +381,7 @@ retype: "Retajpu" | |||
| noteOf: "Noto de {user}" | ||||
| inviteToGroup: "Inviti al grupo" | ||||
| quoteAttached: "Kun citaĵo" | ||||
| quoteQuestion: "Ĉu vi aldonas citaĵon?" | ||||
| quoteQuestion: "Ĉu vi volas aldoni citaĵon?" | ||||
| noMessagesYet: "Ankoraŭ neniu mesaĝo" | ||||
| newMessageExists: "Vi ricevis novan mesaĝon." | ||||
| onlyOneFileCanBeAttached: "Oni povas aldoni nur unu dosieron po mesaĝo." | ||||
|  | @ -481,7 +481,7 @@ description: "Priskribo" | |||
| describeFile: "Priskribi la bildon" | ||||
| enterFileDescription: "Priskribu" | ||||
| author: "Aŭtoro" | ||||
| manage: "Administro" | ||||
| manage: "Bonteni" | ||||
| plugins: "Kromaĵoj" | ||||
| deck: "Kartaro" | ||||
| useFullReactionPicker: "Uzi la tuton de la elektilon de reagoj" | ||||
|  | @ -499,7 +499,7 @@ edit: "Redakti" | |||
| emailServer: "Retpoŝta servilo" | ||||
| enableEmail: "Ebligi dissendon el retpoŝto" | ||||
| email: "Retpoŝto" | ||||
| emailAddress: "Retpoŝtadreso" | ||||
| emailAddress: "Retpoŝta adreso" | ||||
| smtpConfig: "Agordoj de SMTP servilo" | ||||
| smtpHost: "Transa servilo" | ||||
| smtpPort: "Pordo" | ||||
|  | @ -586,7 +586,7 @@ saveConfirm: "Ĉu vi konservas la ŝanĝon?" | |||
| deleteConfirm: "Ĉu certas forviŝi?" | ||||
| closeAccount: "Forigi konton" | ||||
| currentVersion: "Nuna versio" | ||||
| latestVersion: "Plej nova versio" | ||||
| latestVersion: "La plej nova versio" | ||||
| youAreRunningUpToDateClient: "Vi uzas la plej novan version de via kliento." | ||||
| newVersionOfClientAvailable: "Nova versio de via kliento estas disponebla." | ||||
| inUse: "Uzata" | ||||
|  | @ -608,8 +608,9 @@ offline: "Forkonektita" | |||
| instanceBlocking: "Bloki specifajn nodojn" | ||||
| selectAccount: "Elekti konton" | ||||
| user: "Uzantoj" | ||||
| administration: "Administro" | ||||
| administration: "Bontenado" | ||||
| accounts: "Kontoj" | ||||
| recentPosts: "Novaj afiŝoj" | ||||
| shareWithNote: "Kundividi en noto" | ||||
| ads: "Reklamaĵo" | ||||
| memo: "Memorigilo" | ||||
|  | @ -630,11 +631,14 @@ breakFollow: "Ĉesigi la sekvadon al vi" | |||
| itsOn: "Ŝaltita" | ||||
| unread: "Nelegita" | ||||
| controlPanel: "Ŝaltpodio" | ||||
| manageAccounts: "Bonteni la kontojn" | ||||
| classic: "Klasika" | ||||
| ffVisibility: "Videbleco pri viaj sekvataro/sekvantaro\n" | ||||
| ffVisibilityDescription: "Agordi la videblecon kiu povas vidi tiujn kiujn vi sekvas kaj tiujn kiuj sekvas vin." | ||||
| continueThread: "Vidi pli mesaĝarojn" | ||||
| incorrectPassword: "Nevalida pasvorto" | ||||
| leaveGroup: "Eliĝi el la grupo" | ||||
| leaveGroupConfirm: "Ĉu vi certas ke vi volas eliĝi el la grupo {name}?" | ||||
| _emailUnavailable: | ||||
|   used: "La retpoŝto jam estas uzita." | ||||
|   format: "Nevalida formato." | ||||
|  | @ -662,7 +666,7 @@ _email: | |||
|     title: "Vi ricevis peton de sekvado" | ||||
| _plugin: | ||||
|   install: "Instali kromaĵon" | ||||
|   manage: "Administri kromaĵojn" | ||||
|   manage: "Bonteni kromaĵojn" | ||||
| _registry: | ||||
|   key: "Ŝlosilo" | ||||
|   keys: "Ŝlosiloj" | ||||
|  | @ -709,9 +713,9 @@ _channel: | |||
|   edit: "Redakti kanalon" | ||||
|   setBanner: "Apliki standardan bildon" | ||||
|   removeBanner: "Forviŝi la standardan bildon" | ||||
|   owned: "Posedaĵo" | ||||
|   owned: "Bontenitaj de vi" | ||||
|   following: "Sekvante" | ||||
|   usersCount: "{n} partoprenanto(j)" | ||||
|   usersCount: "{n} partoprenantoj" | ||||
| _menuDisplay: | ||||
|   top: "Supro" | ||||
|   hide: "Kaŝi" | ||||
|  | @ -721,7 +725,7 @@ _wordMute: | |||
|   hard: "Per la servilo" | ||||
|   mutedNotes: "Silentigitaj notoj" | ||||
| _theme: | ||||
|   manage: "Administri kolorarojn" | ||||
|   manage: "Bonteni kolorarojn" | ||||
|   code: "Kolorara kodo" | ||||
|   description: "Priskribo" | ||||
|   defaultValue: "Implicitaĵa valoro" | ||||
|  | @ -738,7 +742,7 @@ _theme: | |||
|     renote: "Plusendita" | ||||
|     buttonBg: "Fono de butono" | ||||
|     driveFolderBg: "Fono de dosierujo de la disko" | ||||
|     messageBg: "Fono de retbabilejo" | ||||
|     messageBg: "Fono de la retbabilejo" | ||||
| _sfx: | ||||
|   note: "Nova noto" | ||||
|   noteMy: "Mia noto" | ||||
|  | @ -780,8 +784,8 @@ _permissions: | |||
|   "write:favorites": "Redakti vian liston de preferaĵoj" | ||||
|   "read:following": "Vidi la infomaciojn pri tio, kion vi sekvas" | ||||
|   "write:following": "Sekvi aŭ malsekvi alian uzanton" | ||||
|   "read:messaging": "Vidi vian retbabiladon" | ||||
|   "write:messaging": "Retbabilejo" | ||||
|   "read:messaging": "Vidi viajn retbabiladojn" | ||||
|   "write:messaging": "Administri viajn retbabiladojn" | ||||
|   "read:mutes": "Vidi vian liston de silentigitoj" | ||||
|   "write:mutes": "Redakti vian liston de silentigitoj" | ||||
|   "write:notes": "Krei / Forviŝi noton" | ||||
|  | @ -901,6 +905,7 @@ _pages: | |||
|   title: "Temlinio" | ||||
|   url: "URL de paĝo" | ||||
|   alignCenter: "Centrigi" | ||||
|   hideTitleWhenPinned: "Kaŝi la titolon de la paĝo kiam alpinglita" | ||||
|   chooseBlock: "Aldoni blokon" | ||||
|   contentBlocks: "Enhavo" | ||||
|   inputBlocks: "Enigo" | ||||
|  | @ -1001,8 +1006,8 @@ _notification: | |||
|   youGotQuote: "{name} citis" | ||||
|   youRenoted: "{name} plusendis" | ||||
|   youGotPoll: "{name} balotis" | ||||
|   youGotMessagingMessageFromUser: "{name} sentis mesaĝon al vi." | ||||
|   youGotMessagingMessageFromGroup: "Retbabilan mesaĝon oni sendis al la grupo {name}" | ||||
|   youGotMessagingMessageFromUser: "{name} sendis al vi mesaĝon" | ||||
|   youGotMessagingMessageFromGroup: "Oni sendis al la grupo {name} mesaĝon" | ||||
|   youWereFollowed: "eksekvis vin" | ||||
|   youReceivedFollowRequest: "Vi ricevis peton de sekvado" | ||||
|   yourFollowRequestAccepted: "Via peto de sekvado estis akceptita." | ||||
|  |  | |||
|  | @ -104,7 +104,6 @@ clickToShow: "Click para ver" | |||
| sensitive: "Marcado como sensible" | ||||
| add: "Agregar" | ||||
| reaction: "Reacción" | ||||
| reactionSettingDescription: "Asigne sus reacción favoritas que desean anclar en el selector de reacciones." | ||||
| reactionSettingDescription2: "Arrastre para reordenar, click para borrar, apriete la tecla + para añadir." | ||||
| rememberNoteVisibility: "Recordar visibilidad" | ||||
| attachCancel: "Quitar adjunto" | ||||
|  |  | |||
|  | @ -106,7 +106,6 @@ clickToShow: "Cliquer pour afficher" | |||
| sensitive: "Contenu sensible" | ||||
| add: "Ajouter" | ||||
| reaction: "Réactions" | ||||
| reactionSettingDescription: "Choisissez vos réactions préférées que vous souhaitez épingler dans le sélecteur de réactions." | ||||
| reactionSettingDescription2: "Déplacer pour réorganiser, cliquer pour effacer, utiliser « + » pour ajouter." | ||||
| rememberNoteVisibility: "Activer l'option \" se souvenir de la visibilité des notes \" vous permet de réutiliser automatiquement la visibilité utilisée lors de la publication de votre note précédente." | ||||
| attachCancel: "Supprimer le fichier attaché" | ||||
|  |  | |||
|  | @ -106,7 +106,6 @@ clickToShow: "Klik untuk melihat" | |||
| sensitive: "Konten sensitif" | ||||
| add: "Tambahkan" | ||||
| reaction: "Reaksi" | ||||
| reactionSettingDescription: "Masukkan reaksi favorit yang ingin kamu sematkan pada bilah reaksi" | ||||
| reactionSettingDescription2: "Geser untuk memindah urutkan, klik untuk menghapus, tekan \"+\" untuk menambahkan" | ||||
| rememberNoteVisibility: "Ingat pengaturan visibilitas catatan" | ||||
| attachCancel: "Hapus lampiran" | ||||
|  |  | |||
|  | @ -103,7 +103,6 @@ clickToShow: "Clicca per visualizzare" | |||
| sensitive: "Contenuto sensibile" | ||||
| add: "Aggiungi" | ||||
| reaction: "Reazione" | ||||
| reactionSettingDescription: "Scegli le reazioni che preferisci e fissale nel pannello di reazioni." | ||||
| reactionSettingDescription2: "Trascina per riorganizzare, clicca per cancellare, usa il pulsante \"+\" per aggiungere." | ||||
| rememberNoteVisibility: "Ricordare le impostazioni di visibilità delle note" | ||||
| attachCancel: "Rimuovi allegato" | ||||
|  |  | |||
|  | @ -685,6 +685,7 @@ center: "中央" | |||
| wide: "広い" | ||||
| narrow: "狭い" | ||||
| reloadToApplySetting: "設定はページリロード後に反映されます。今すぐリロードしますか?" | ||||
| needReloadToApply: "反映には再起動が必要です。" | ||||
| showTitlebar: "タイトルバーを表示する" | ||||
| clearCache: "キャッシュをクリア" | ||||
| onlineUsersCount: "{n}人がオンライン" | ||||
|  | @ -816,6 +817,7 @@ hide: "隠す" | |||
| leaveGroup: "グループから抜ける" | ||||
| leaveGroupConfirm: "「{name}」から抜けますか?" | ||||
| useDrawerReactionPickerForMobile: "モバイルデバイスのときドロワーで表示" | ||||
| welcomeBackWithName: "おかえりなさい、{name}さん" | ||||
| 
 | ||||
| _emailUnavailable: | ||||
|   used: "既に使用されています" | ||||
|  |  | |||
|  | @ -104,7 +104,6 @@ clickToShow: "押したら見えるで" | |||
| sensitive: "ちょっとアカンやつやで" | ||||
| add: "増やす" | ||||
| reaction: "リアクション" | ||||
| reactionSettingDescription: "リアクションピッカーに出しとくリアクションを選んでや。" | ||||
| reactionSettingDescription2: "ドラッグで並び替え、クリックで削除、+を押して追加やで。" | ||||
| rememberNoteVisibility: "公開範囲覚えといて" | ||||
| attachCancel: "のっけるのやめる" | ||||
|  | @ -204,7 +203,7 @@ noJobs: "ジョブはあらへん" | |||
| federating: "連合しとる" | ||||
| blocked: "ブロックしとる" | ||||
| suspended: "配信せぇへん" | ||||
| all: "みな" | ||||
| all: "みんな" | ||||
| subscribing: "購読しとる" | ||||
| publishing: "配信しとる" | ||||
| notResponding: "応答してへんで" | ||||
|  | @ -849,7 +848,7 @@ _permissions: | |||
| _auth: | ||||
|   permissionAsk: "このアプリは次の権限を要求しとるで" | ||||
| _antennaSources: | ||||
|   all: "みなのノート" | ||||
|   all: "みんなのノート" | ||||
|   homeTimeline: "フォローしとるユーザーのノート" | ||||
| _weekday: | ||||
|   sunday: "日曜日" | ||||
|  | @ -897,7 +896,7 @@ _poll: | |||
|   votesCount: "{n}票" | ||||
|   vote: "投票する" | ||||
| _visibility: | ||||
|   publicDescription: "みなのユーザーに公開" | ||||
|   publicDescription: "みんなに公開" | ||||
|   home: "ホーム" | ||||
|   followers: "フォロワー" | ||||
| _profile: | ||||
|  |  | |||
|  | @ -106,7 +106,6 @@ clickToShow: "클릭하여 보기" | |||
| sensitive: "열람주의" | ||||
| add: "추가" | ||||
| reaction: "리액션" | ||||
| reactionSettingDescription: "리액션 선택 상자에 표시할 리액션을 설정합니다." | ||||
| reactionSettingDescription2: "끌어서 순서 변경, 클릭해서 삭제, +를 눌러서 추가할 수 있습니다." | ||||
| rememberNoteVisibility: "공개 범위를 기억하기" | ||||
| attachCancel: "첨부 취소" | ||||
|  |  | |||
|  | @ -106,7 +106,6 @@ clickToShow: "Klik om te bekijken" | |||
| sensitive: "NSFW" | ||||
| add: "Toevoegen" | ||||
| reaction: "Reacties" | ||||
| reactionSettingDescription: "Configureer welke reacties je wilt weergeven in de reactiekiezer." | ||||
| reactionSettingDescription2: "Sleep om opnieuw te ordenen, Klik om te verwijderen, Druk op \"+\" om toe te voegen" | ||||
| rememberNoteVisibility: "Vergeet niet de notitie zichtbaarheidsinstellingen" | ||||
| attachCancel: "Verwijder bijlage" | ||||
|  |  | |||
|  | @ -104,7 +104,6 @@ clickToShow: "Kliknij, aby wyświetlić" | |||
| sensitive: "NSFW" | ||||
| add: "Dodaj" | ||||
| reaction: "Reakcja" | ||||
| reactionSettingDescription: "Przypisz swoje ulubione reakcje, które chcesz przypiąć w wyborze reakcji." | ||||
| reactionSettingDescription2: "Przeciągnij aby zmienić kolejność, naciśnij aby usunąć, naciśnij „+” aby dodać" | ||||
| rememberNoteVisibility: "Zapamiętuj ustawienia widoczności wpisu" | ||||
| attachCancel: "Usuń załącznik" | ||||
|  |  | |||
|  | @ -106,7 +106,6 @@ clickToShow: "Нажмите для просмотра" | |||
| sensitive: "Содержимое не для всех" | ||||
| add: "Добавить" | ||||
| reaction: "Реакции" | ||||
| reactionSettingDescription: "Подберите, что будет у вас в палитре реакций" | ||||
| reactionSettingDescription2: "Расставляйте перетаскиванием, удаляйте нажатием, добавляйте кнопкой «+»." | ||||
| rememberNoteVisibility: "Запоминать видимость заметок" | ||||
| attachCancel: "Удалить вложение" | ||||
|  | @ -803,6 +802,7 @@ classic: "Классика" | |||
| unmuteThread: "Отключить звук" | ||||
| ffVisibilityDescription: "Вы можете установить объем вашей следующей/последней информации." | ||||
| hide: "Спрятать" | ||||
| leaveGroupConfirm: "Вы хотите оставить \"{name}\"?" | ||||
| _emailUnavailable: | ||||
|   used: "Уже используется" | ||||
|   format: "Неправильный формат" | ||||
|  |  | |||
|  | @ -103,7 +103,6 @@ clickToShow: "Натисніть для перегляду" | |||
| sensitive: "NSFW" | ||||
| add: "Додати" | ||||
| reaction: "Реакції" | ||||
| reactionSettingDescription: "Виберіть свої улюблені реакції, які хочете закріпити в селекторі реакцій." | ||||
| reactionSettingDescription2: "Перемістити щоб змінити порядок, Клацнути мишою щоб видалити, Натиснути \"+\" щоб додати." | ||||
| rememberNoteVisibility: "Пам’ятати параметри видимісті" | ||||
| attachCancel: "Видалити вкладення" | ||||
|  |  | |||
|  | @ -106,7 +106,7 @@ clickToShow: "点击以显示" | |||
| sensitive: "敏感内容" | ||||
| add: "添加" | ||||
| reaction: "回应" | ||||
| reactionSettingDescription: "选择您想要置顶的回应。" | ||||
| reactionSetting: "在选择器中显示的回应" | ||||
| reactionSettingDescription2: "拖动重新排序,单击删除,点击 + 添加。" | ||||
| rememberNoteVisibility: "保存上次设置的可见性" | ||||
| attachCancel: "删除附件" | ||||
|  | @ -813,6 +813,9 @@ deleteAccountConfirm: "将要删除账户。是否确认?" | |||
| incorrectPassword: "密码错误" | ||||
| voteConfirm: "确定投给“{choice}” ?" | ||||
| hide: "隐藏" | ||||
| leaveGroup: "离开群组" | ||||
| leaveGroupConfirm: "确定离开「{name}」?" | ||||
| useDrawerReactionPickerForMobile: "在移动设备上使用抽屉显示" | ||||
| _emailUnavailable: | ||||
|   used: "已经被使用过" | ||||
|   format: "无效的格式" | ||||
|  |  | |||
|  | @ -104,7 +104,6 @@ clickToShow: "按一下以顯示" | |||
| sensitive: "敏感內容" | ||||
| add: "新增" | ||||
| reaction: "情感" | ||||
| reactionSettingDescription: "置頂「反應」表情符號\n" | ||||
| reactionSettingDescription2: "拖動以重新列序,點擊以刪除,按下 + 添加。" | ||||
| rememberNoteVisibility: "記住貼文可見性" | ||||
| attachCancel: "移除附件" | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| { | ||||
| 	"name": "misskey", | ||||
| 	"version": "12.100.1", | ||||
| 	"version": "12.100.2", | ||||
| 	"codename": "indigo", | ||||
| 	"repository": { | ||||
| 		"type": "git", | ||||
|  |  | |||
|  | @ -1,5 +1,6 @@ | |||
| import { del, get, set } from '@/scripts/idb-proxy'; | ||||
| import { reactive } from 'vue'; | ||||
| import * as misskey from 'misskey-js'; | ||||
| import { apiUrl } from '@/config'; | ||||
| import { waiting, api, popup, popupMenu, success } from '@/os'; | ||||
| import { unisonReload, reloadChannel } from '@/scripts/unison-reload'; | ||||
|  | @ -8,13 +9,7 @@ import { i18n } from './i18n'; | |||
| 
 | ||||
| // TODO: 他のタブと永続化されたstateを同期
 | ||||
| 
 | ||||
| type Account = { | ||||
| 	id: string; | ||||
| 	token: string; | ||||
| 	isModerator: boolean; | ||||
| 	isAdmin: boolean; | ||||
| 	isDeleted: boolean; | ||||
| }; | ||||
| type Account = misskey.entities.MeDetailed; | ||||
| 
 | ||||
| const data = localStorage.getItem('account'); | ||||
| 
 | ||||
|  |  | |||
|  | @ -157,7 +157,7 @@ export default defineComponent({ | |||
| 			items: [], | ||||
| 			mfmTags: [], | ||||
| 			select: -1, | ||||
| 			zIndex: os.claimZIndex(true), | ||||
| 			zIndex: os.claimZIndex('high'), | ||||
| 		} | ||||
| 	}, | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| <template> | ||||
| <MkModal ref="modal" :prefer-type="'dialog'" :front="true" @click="done(true)" @closed="$emit('closed')"> | ||||
| <MkModal ref="modal" :prefer-type="'dialog'" :z-priority="'high'" @click="done(true)" @closed="$emit('closed')"> | ||||
| 	<div class="mk-dialog"> | ||||
| 		<div v-if="icon" class="icon"> | ||||
| 			<i :class="icon"></i> | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| <template> | ||||
| <MkModal ref="modal" v-slot="{ type, maxHeight }" :prefer-type="asReactionPicker && $store.state.reactionPickerUseDrawerForMobile === false ? 'popup' : 'auto'" :transparent-bg="true" :manual-showing="manualShowing" :src="src" :front="true" @click="$refs.modal.close()" @opening="opening" @close="$emit('close')" @closed="$emit('closed')"> | ||||
| <MkModal ref="modal" v-slot="{ type, maxHeight }" :z-priority="'middle'" :prefer-type="asReactionPicker && $store.state.reactionPickerUseDrawerForMobile === false ? 'popup' : 'auto'" :transparent-bg="true" :manual-showing="manualShowing" :src="src" @click="$refs.modal.close()" @opening="opening" @close="$emit('close')" @closed="$emit('closed')"> | ||||
| 	<MkEmojiPicker ref="picker" class="ryghynhb _popup _shadow" :class="{ drawer: type === 'drawer' }" :show-pinned="showPinned" :as-reaction-picker="asReactionPicker" :as-drawer="type === 'drawer'" :max-height="maxHeight" @chosen="chosen"/> | ||||
| </MkModal> | ||||
| </template> | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| <template> | ||||
| <MkModal ref="modal" @click="$refs.modal.close()" @closed="$emit('closed')"> | ||||
| <MkModal ref="modal" :z-priority="'middle'" @click="$refs.modal.close()" @closed="$emit('closed')"> | ||||
| 	<div class="xubzgfga"> | ||||
| 		<header>{{ image.name }}</header> | ||||
| 		<img :src="image.url" :alt="image.comment" :title="image.comment" @click="$refs.modal.close()"/> | ||||
|  |  | |||
							
								
								
									
										74
									
								
								packages/client/src/components/notification-toast.vue
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								packages/client/src/components/notification-toast.vue
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,74 @@ | |||
| <template> | ||||
| <div class="mk-notification-toast" :style="{ zIndex }"> | ||||
| 	<transition name="notification-toast" appear @after-leave="$emit('closed')"> | ||||
| 		<XNotification v-if="showing" :notification="notification" class="notification _acrylic"/> | ||||
| 	</transition> | ||||
| </div> | ||||
| </template> | ||||
| 
 | ||||
| <script lang="ts"> | ||||
| import { defineComponent } from 'vue'; | ||||
| import XNotification from './notification.vue'; | ||||
| import * as os from '@/os'; | ||||
| 
 | ||||
| export default defineComponent({ | ||||
| 	components: { | ||||
| 		XNotification | ||||
| 	}, | ||||
| 	props: { | ||||
| 		notification: { | ||||
| 			type: Object, | ||||
| 			required: true | ||||
| 		} | ||||
| 	}, | ||||
| 	emits: ['closed'], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			showing: true, | ||||
| 			zIndex: os.claimZIndex('high'), | ||||
| 		}; | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		setTimeout(() => { | ||||
| 			this.showing = false; | ||||
| 		}, 6000); | ||||
| 	} | ||||
| }); | ||||
| </script> | ||||
| 
 | ||||
| <style lang="scss" scoped> | ||||
| .notification-toast-enter-active, .notification-toast-leave-active { | ||||
| 	transition: opacity 0.3s, transform 0.3s !important; | ||||
| } | ||||
| .notification-toast-enter-from, .notification-toast-leave-to { | ||||
| 	opacity: 0; | ||||
| 	transform: translateX(-250px); | ||||
| } | ||||
| 
 | ||||
| .mk-notification-toast { | ||||
| 	position: fixed; | ||||
| 	left: 0; | ||||
| 	width: 250px; | ||||
| 	top: 32px; | ||||
| 	padding: 0 32px; | ||||
| 	pointer-events: none; | ||||
| 
 | ||||
| 	@media (max-width: 700px) { | ||||
| 		top: initial; | ||||
| 		bottom: 112px; | ||||
| 		padding: 0 16px; | ||||
| 	} | ||||
| 
 | ||||
| 	@media (max-width: 500px) { | ||||
| 		bottom: 92px; | ||||
| 		padding: 0 8px; | ||||
| 	} | ||||
| 
 | ||||
| 	> .notification { | ||||
| 		height: 100%; | ||||
| 		box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3); | ||||
| 		border-radius: 8px; | ||||
| 		overflow: hidden; | ||||
| 	} | ||||
| } | ||||
| </style> | ||||
|  | @ -1,74 +1,70 @@ | |||
| <template> | ||||
| <div class="mk-toast" :style="{ zIndex }"> | ||||
| 	<transition name="notification-slide" appear @after-leave="$emit('closed')"> | ||||
| 		<XNotification v-if="showing" :notification="notification" class="notification _acrylic"/> | ||||
| <div class="mk-toast"> | ||||
| 	<transition name="toast" appear @after-leave="$emit('closed')"> | ||||
| 		<div v-if="showing" class="body _acrylic" :style="{ zIndex }"> | ||||
| 			<div class="message"> | ||||
| 				{{ message }} | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</transition> | ||||
| </div> | ||||
| </template> | ||||
| 
 | ||||
| <script lang="ts"> | ||||
| import { defineComponent } from 'vue'; | ||||
| import XNotification from './notification.vue'; | ||||
| import * as os from '@/os'; | ||||
| 
 | ||||
| export default defineComponent({ | ||||
| 	components: { | ||||
| 		XNotification | ||||
| 	}, | ||||
| 	props: { | ||||
| 		notification: { | ||||
| 			type: Object, | ||||
| 			required: true | ||||
| 		} | ||||
| 		message: { | ||||
| 			type: String, | ||||
| 			required: true, | ||||
| 		}, | ||||
| 	}, | ||||
| 	emits: ['closed'], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			showing: true, | ||||
| 			zIndex: os.claimZIndex(true), | ||||
| 			zIndex: os.claimZIndex('high'), | ||||
| 		}; | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		setTimeout(() => { | ||||
| 			this.showing = false; | ||||
| 		}, 6000); | ||||
| 		}, 4000); | ||||
| 	} | ||||
| }); | ||||
| </script> | ||||
| 
 | ||||
| <style lang="scss" scoped> | ||||
| .notification-slide-enter-active, .notification-slide-leave-active { | ||||
| .toast-enter-active, .toast-leave-active { | ||||
| 	transition: opacity 0.3s, transform 0.3s !important; | ||||
| } | ||||
| .notification-slide-enter-from, .notification-slide-leave-to { | ||||
| .toast-enter-from, .toast-leave-to { | ||||
| 	opacity: 0; | ||||
| 	transform: translateX(-250px); | ||||
| 	transform: translateY(-100%); | ||||
| } | ||||
| 
 | ||||
| .mk-toast { | ||||
| 	position: fixed; | ||||
| 	left: 0; | ||||
| 	width: 250px; | ||||
| 	top: 32px; | ||||
| 	padding: 0 32px; | ||||
| 	pointer-events: none; | ||||
| 
 | ||||
| 	@media (max-width: 700px) { | ||||
| 		top: initial; | ||||
| 		bottom: 112px; | ||||
| 		padding: 0 16px; | ||||
| 	} | ||||
| 
 | ||||
| 	@media (max-width: 500px) { | ||||
| 		bottom: 92px; | ||||
| 		padding: 0 8px; | ||||
| 	} | ||||
| 
 | ||||
| 	> .notification { | ||||
| 		height: 100%; | ||||
| 	> .body { | ||||
| 		position: fixed; | ||||
| 		left: 0; | ||||
| 		right: 0; | ||||
| 		top: 0; | ||||
| 		margin: 0 auto; | ||||
| 		margin-top: 16px; | ||||
| 		min-width: 300px; | ||||
| 		max-width: calc(100% - 32px); | ||||
| 		width: min-content; | ||||
| 		box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3); | ||||
| 		border-radius: 8px; | ||||
| 		overflow: hidden; | ||||
| 		overflow: clip; | ||||
| 		text-align: center; | ||||
| 		pointer-events: none; | ||||
| 
 | ||||
| 		> .message { | ||||
| 			padding: 16px 24px; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| </style> | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| <template> | ||||
| <transition :name="$store.state.animation ? 'fade' : ''" appear> | ||||
| 	<div class="nvlagfpb" @contextmenu.prevent.stop="() => {}"> | ||||
| 	<div class="nvlagfpb" :style="{ zIndex }" @contextmenu.prevent.stop="() => {}"> | ||||
| 		<MkMenu :items="items" class="_popup _shadow" :align="'left'" @close="$emit('closed')"/> | ||||
| 	</div> | ||||
| </transition> | ||||
|  | @ -10,6 +10,7 @@ | |||
| import { defineComponent } from 'vue'; | ||||
| import contains from '@/scripts/contains'; | ||||
| import MkMenu from './menu.vue'; | ||||
| import * as os from '@/os'; | ||||
| 
 | ||||
| export default defineComponent({ | ||||
| 	components: { | ||||
|  | @ -29,6 +30,11 @@ export default defineComponent({ | |||
| 		}, | ||||
| 	}, | ||||
| 	emits: ['closed'], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			zIndex: os.claimZIndex('high'), | ||||
| 		}; | ||||
| 	}, | ||||
| 	computed: { | ||||
| 		keymap(): any { | ||||
| 			return { | ||||
|  | @ -82,7 +88,6 @@ export default defineComponent({ | |||
| <style lang="scss" scoped> | ||||
| .nvlagfpb { | ||||
| 	position: absolute; | ||||
| 	z-index: 65535; | ||||
| } | ||||
| 
 | ||||
| .fade-enter-active, .fade-leave-active { | ||||
|  |  | |||
|  | @ -280,8 +280,7 @@ export default defineComponent({ | |||
| 
 | ||||
| 	> .divider { | ||||
| 		margin: 8px 0; | ||||
| 		height: 1px; | ||||
| 		background: var(--divider); | ||||
| 		border-top: solid 0.5px var(--divider); | ||||
| 	} | ||||
| 
 | ||||
| 	&.asDrawer { | ||||
|  |  | |||
|  | @ -49,10 +49,10 @@ export default defineComponent({ | |||
| 			type: String, | ||||
| 			default: 'auto', | ||||
| 		}, | ||||
| 		front: { | ||||
| 			type: Boolean, | ||||
| 		zPriority: { | ||||
| 			type: String as PropType<'low' | 'middle' | 'high'>, | ||||
| 			required: false, | ||||
| 			default: false, | ||||
| 			default: 'low', | ||||
| 		}, | ||||
| 		noOverlap: { | ||||
| 			type: Boolean, | ||||
|  | @ -74,7 +74,7 @@ export default defineComponent({ | |||
| 		const transformOrigin = ref('center'); | ||||
| 		const showing = ref(true); | ||||
| 		const content = ref<HTMLElement>(); | ||||
| 		const zIndex = os.claimZIndex(props.front); | ||||
| 		const zIndex = os.claimZIndex(props.zPriority); | ||||
| 		const type = computed(() => { | ||||
| 			if (props.preferType === 'auto') { | ||||
| 				if (isTouchUsing && window.innerWidth < 500 && window.innerHeight < 1000) { | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| <template> | ||||
| <MkModal ref="modal" v-slot="{ type, maxHeight }" :src="src" :transparent-bg="true" @click="$refs.modal.close()" @closed="$emit('closed')"> | ||||
| <MkModal ref="modal" v-slot="{ type, maxHeight }" :z-priority="'high'" :src="src" :transparent-bg="true" @click="$refs.modal.close()" @closed="$emit('closed')"> | ||||
| 	<MkMenu :items="items" :align="align" :width="width" :max-height="maxHeight" :as-drawer="type === 'drawer'" class="sfhdhdhq _popup _shadow" :class="{ drawer: type === 'drawer' }" @close="$refs.modal.close()"/> | ||||
| </MkModal> | ||||
| </template> | ||||
|  |  | |||
|  | @ -34,7 +34,7 @@ export default defineComponent({ | |||
| 
 | ||||
| 	setup(props, context) { | ||||
| 		const el = ref<HTMLElement>(); | ||||
| 		const zIndex = os.claimZIndex(true); | ||||
| 		const zIndex = os.claimZIndex('high'); | ||||
| 
 | ||||
| 		const setPosition = () => { | ||||
| 			if (el.value == null) return; | ||||
|  |  | |||
|  | @ -155,7 +155,7 @@ export default defineComponent({ | |||
| 
 | ||||
| 		// 最前面へ移動 | ||||
| 		top() { | ||||
| 			(this.$el as any).style.zIndex = os.claimZIndex(this.front); | ||||
| 			(this.$el as any).style.zIndex = os.claimZIndex(this.front ? 'middle' : 'low'); | ||||
| 		}, | ||||
| 
 | ||||
| 		onBodyMousedown() { | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| <template> | ||||
| <MkModal ref="modal" @click="$refs.modal.close()" @closed="$emit('closed')"> | ||||
| <MkModal ref="modal" :z-priority="'middle'" @click="$refs.modal.close()" @closed="$emit('closed')"> | ||||
| 	<div class="ewlycnyt"> | ||||
| 		<div class="title">{{ $ts.misskeyUpdated }}</div> | ||||
| 		<div class="version">✨{{ version }}🚀</div> | ||||
|  |  | |||
|  | @ -35,7 +35,7 @@ export default defineComponent({ | |||
| 			u: null, | ||||
| 			top: 0, | ||||
| 			left: 0, | ||||
| 			zIndex: os.claimZIndex(), | ||||
| 			zIndex: os.claimZIndex('middle'), | ||||
| 		}; | ||||
| 	}, | ||||
| 
 | ||||
|  |  | |||
|  | @ -65,7 +65,7 @@ export default defineComponent({ | |||
| 			fetched: false, | ||||
| 			top: 0, | ||||
| 			left: 0, | ||||
| 			zIndex: os.claimZIndex(), | ||||
| 			zIndex: os.claimZIndex('middle'), | ||||
| 		}; | ||||
| 	}, | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| <template> | ||||
| <MkModal ref="modal" :src="src" @click="$refs.modal.close()" @closed="$emit('closed')"> | ||||
| <MkModal ref="modal" :z-priority="'high'" :src="src" @click="$refs.modal.close()" @closed="$emit('closed')"> | ||||
| 	<div class="gqyayizv _popup"> | ||||
| 		<button key="public" class="_button" :class="{ active: v == 'public' }" data-index="1" @click="choose('public')"> | ||||
| 			<div><i class="fas fa-globe"></i></div> | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| <template> | ||||
| <MkModal ref="modal" :prefer-type="'dialog'" @click="success ? done() : () => {}" @closed="$emit('closed')"> | ||||
| <MkModal ref="modal" :prefer-type="'dialog'" :z-priority="'high'" @click="success ? done() : () => {}" @closed="$emit('closed')"> | ||||
| 	<div class="iuyakobc" :class="{ iconOnly: (text == null) || success }"> | ||||
| 		<i v-if="success" class="fas fa-check icon success"></i> | ||||
| 		<i v-else class="fas fa-spinner fa-pulse icon waiting"></i> | ||||
|  |  | |||
|  | @ -26,7 +26,7 @@ import { router } from '@/router'; | |||
| import { applyTheme } from '@/scripts/theme'; | ||||
| import { isDeviceDarkmode } from '@/scripts/is-device-darkmode'; | ||||
| import { i18n } from '@/i18n'; | ||||
| import { stream, confirm, alert, post, popup } from '@/os'; | ||||
| import { stream, confirm, alert, post, popup, toast } from '@/os'; | ||||
| import * as sound from '@/scripts/sound'; | ||||
| import { $i, refreshAccount, login, updateAccount, signout } from '@/account'; | ||||
| import { defaultStore, ColdDeviceStorage } from '@/store'; | ||||
|  | @ -342,6 +342,18 @@ if ($i) { | |||
| 		}); | ||||
| 	} | ||||
| 
 | ||||
| 	const lastUsed = localStorage.getItem('lastUsed'); | ||||
| 	if (lastUsed) { | ||||
| 		const lastUsedDate = parseInt(lastUsed, 10); | ||||
| 		// 二時間以上前なら
 | ||||
| 		if (Date.now() - lastUsedDate > 1000 * 60 * 60 * 2) { | ||||
| 			toast(i18n.t('welcomeBackWithName', { | ||||
| 				name: $i.name || $i.username, | ||||
| 			})); | ||||
| 		} | ||||
| 	} | ||||
| 	localStorage.setItem('lastUsed', Date.now().toString()); | ||||
| 
 | ||||
| 	if ('Notification' in window) { | ||||
| 		// 許可を得ていなかったらリクエスト
 | ||||
| 		if (Notification.permission === 'default') { | ||||
|  |  | |||
|  | @ -162,16 +162,14 @@ export const popups = ref([]) as Ref<{ | |||
| 	props: Record<string, any>; | ||||
| }[]>; | ||||
| 
 | ||||
| let popupZIndex = 1000000; | ||||
| let popupZIndexForFront = 2000000; | ||||
| export function claimZIndex(front = false): number { | ||||
| 	if (front) { | ||||
| 		popupZIndexForFront += 100; | ||||
| 		return popupZIndexForFront; | ||||
| 	} else { | ||||
| 		popupZIndex += 100; | ||||
| 		return popupZIndex; | ||||
| 	} | ||||
| const zIndexes = { | ||||
| 	low: 1000000, | ||||
| 	middle: 2000000, | ||||
| 	high: 3000000, | ||||
| }; | ||||
| export function claimZIndex(priority: 'low' | 'middle' | 'high' = 'low'): number { | ||||
| 	zIndexes[priority] += 100; | ||||
| 	return zIndexes[priority]; | ||||
| } | ||||
| 
 | ||||
| export async function popup(component: Component | typeof import('*.vue') | Promise<Component | typeof import('*.vue')>, props: Record<string, any>, events = {}, disposeEvent?: string) { | ||||
|  | @ -223,7 +221,9 @@ export function modalPageWindow(path: string) { | |||
| } | ||||
| 
 | ||||
| export function toast(message: string) { | ||||
| 	// TODO
 | ||||
| 	popup(import('@/components/toast.vue'), { | ||||
| 		message | ||||
| 	}, {}, 'closed'); | ||||
| } | ||||
| 
 | ||||
| export function alert(props: { | ||||
|  |  | |||
|  | @ -12,7 +12,6 @@ | |||
| import { defineComponent } from 'vue'; | ||||
| import * as os from '@/os'; | ||||
| import copyToClipboard from '@/scripts/copy-to-clipboard'; | ||||
| import VanillaTilt from 'vanilla-tilt'; | ||||
| 
 | ||||
| export default defineComponent({ | ||||
| 	props: { | ||||
|  | @ -22,17 +21,6 @@ export default defineComponent({ | |||
| 		} | ||||
| 	}, | ||||
| 
 | ||||
| 	mounted() { | ||||
| 		if (this.$store.animation) { | ||||
| 			VanillaTilt.init(this.$el, { | ||||
| 				reverse: true, | ||||
| 				gyroscope: false, | ||||
| 				scale: 1.1, | ||||
| 				speed: 500, | ||||
| 			}); | ||||
| 		} | ||||
| 	}, | ||||
| 
 | ||||
| 	methods: { | ||||
| 		menu(ev) { | ||||
| 			os.popupMenu([{ | ||||
|  | @ -59,8 +47,6 @@ export default defineComponent({ | |||
| 	text-align: left; | ||||
| 	background: var(--panel); | ||||
| 	border-radius: 8px; | ||||
| 	transform-style: preserve-3d; | ||||
| 	transform: perspective(1000px); | ||||
| 
 | ||||
| 	&:hover { | ||||
| 		border-color: var(--accent); | ||||
|  | @ -69,14 +55,12 @@ export default defineComponent({ | |||
| 	> .img { | ||||
| 		width: 42px; | ||||
| 		height: 42px; | ||||
| 		transform: translateZ(20px); | ||||
| 	} | ||||
| 
 | ||||
| 	> .body { | ||||
| 		padding: 0 0 0 8px; | ||||
| 		white-space: nowrap; | ||||
| 		overflow: hidden; | ||||
| 		transform: translateZ(10px); | ||||
| 
 | ||||
| 		> .name { | ||||
| 			text-overflow: ellipsis; | ||||
|  |  | |||
|  | @ -30,7 +30,10 @@ | |||
| 		<option :value="3">{{ $ts.large }}</option> | ||||
| 	</FormRadios> | ||||
| 
 | ||||
| 	<FormSwitch v-model="reactionPickerUseDrawerForMobile" class="_formBlock">{{ $ts.useDrawerReactionPickerForMobile }}</FormSwitch> | ||||
| 	<FormSwitch v-model="reactionPickerUseDrawerForMobile" class="_formBlock"> | ||||
| 		{{ $ts.useDrawerReactionPickerForMobile }} | ||||
| 		<template #caption>{{ $ts.needReloadToApply }}</template> | ||||
| 	</FormSwitch> | ||||
| 
 | ||||
| 	<FormSection> | ||||
| 		<div style="display: flex; gap: var(--margin); flex-wrap: wrap;"> | ||||
|  |  | |||
|  | @ -34,7 +34,7 @@ export default defineComponent({ | |||
| 					id: notification.id | ||||
| 				}); | ||||
| 
 | ||||
| 				popup(import('@/components/toast.vue'), { | ||||
| 				popup(import('@/components/notification-toast.vue'), { | ||||
| 					notification | ||||
| 				}, {}, 'closed'); | ||||
| 			} | ||||
|  | @ -60,7 +60,7 @@ export default defineComponent({ | |||
| #wait { | ||||
| 	display: block; | ||||
| 	position: fixed; | ||||
| 	z-index: 3000000; | ||||
| 	z-index: 4000000; | ||||
| 	top: 15px; | ||||
| 	right: 15px; | ||||
| 
 | ||||
|  |  | |||
|  | @ -25,7 +25,7 @@ export default defineComponent({ | |||
| 	data() { | ||||
| 		return { | ||||
| 			uploads: os.uploads, | ||||
| 			zIndex: os.claimZIndex(true), | ||||
| 			zIndex: os.claimZIndex('high'), | ||||
| 		}; | ||||
| 	}, | ||||
| }); | ||||
|  |  | |||
|  | @ -82,7 +82,7 @@ export default defineComponent({ | |||
| 		}); | ||||
| 
 | ||||
| 		const columns = deckStore.reactiveState.columns; | ||||
| 		const layout = deckStore.reactiveState.layout.value; | ||||
| 		const layout = deckStore.reactiveState.layout; | ||||
| 		const menuIndicated = computed(() => { | ||||
| 			if ($i == null) return false; | ||||
| 			for (const def in menuDef) { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue