Commit Graph

618 Commits

Author SHA1 Message Date
syuilo 43b9a9e618 enhance(client): tweak ui 2022-06-22 23:40:53 +09:00
syuilo d3f25fa290 tweak client 2022-06-22 20:47:53 +09:00
syuilo be383aa5b2 refactor(client): use composition api 2022-06-22 16:30:55 +09:00
syuilo 85365da69e refactor(client): refactor header tab handling 2022-06-22 16:30:45 +09:00
syuilo e44cb42de4 🎨 2022-06-22 00:48:16 +09:00
syuilo ad123b3cce tweak client 2022-06-22 00:10:34 +09:00
syuilo c9d4c00708 fix(client): moderators cannot view instance-info page 2022-06-21 23:22:18 +09:00
syuilo 2d181ba5af enhance(client): show warning in control panel when there is an unresolved abuse report 2022-06-21 19:48:28 +09:00
syuilo f880d0631c tweak client 2022-06-21 17:55:38 +09:00
syuilo a6fff86099 refactor(client): use composition api 2022-06-21 14:39:23 +09:00
syuilo 14cc341cc9 chore: add comments 2022-06-21 14:18:06 +09:00
syuilo ce6cc21bcd tweak client
Fix #8856
2022-06-21 14:12:39 +09:00
Johann150 3796a3edea
fix: block button in federation panel (#8855) 2022-06-20 23:48:38 +09:00
syuilo f995172c5d tweak client 2022-06-20 21:05:18 +09:00
syuilo 8e20e27ff9 fix client 2022-06-20 19:49:51 +09:00
syuilo 699f24f3dc
refactor(client): Refine routing (#8846) 2022-06-20 17:38:49 +09:00
tamaina 30a39a296d
refactor: チャットルームをComposition API化 (#8850)
* pick form

* pick message

* pick room

* fix lint

* fix scroll?

* fix scroll.ts

* fix directives/sticky-container

* update global/sticky-container.vue

* fix, 🎨

* test.1
2022-06-20 13:20:28 +09:00
tamaina b70473ed60
feat: Add Badge Image to Push Notification (#8012)
* fix

* nanka iroiro

* wip

* wip

* fix lint

* fix loginId

* fix

* refactor

* refactor

* remove follow action

* clean up

* Revert "remove follow action"

This reverts commit defbb416480905af2150d1c92f10d8e1d1288c0a.

* Revert "clean up"

This reverts commit f94919cb9cff41e274044fc69c56ad36a33974f2.

* remove fetch specification

* renoteの条件追加

* apiFetch => cli

* bypass fetch?

* fix

* refactor: use path alias

* temp: add submodule

* remove submodule

* enhane: unison-reloadに指定したパスに移動できるように

* null

* null

* feat: ログインするアカウントのIDをクエリ文字列で指定する機能

* null

* await?

* rename

* rename

* Update read.ts

* merge

* get-note-summary

* fix

* swパッケージに

* add missing packages

* fix getNoteSummary

* add webpack-cli

* ✌️

* remove plugins

* sw-inject分離したがテストしてない

* fix notification.vue

* remove a blank line

* disconnect intersection observer

* disconnect2

* fix notification.vue

* remove a blank line

* disconnect intersection observer

* disconnect2

* fix

* ✌️

* clean up config

* typesを戻した

* backend/src/web/index.ts

* notification-badges

* add scripts

* change create-notification.ts

* Update packages/client/src/components/notification.vue

Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>

* disconnect

* oops

* Failed to load the script unexpectedly回避
sw.jsとlib.tsを分離してみた

* truncate notification

* Update packages/client/src/ui/_common_/common.vue

Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>

* clean up

* clean up

* refactor

* キャッシュ対策

* Truncate push notification message

* fix

* クライアントがあったらストリームに接続しているということなので通知しない判定の位置を修正

* components/drive-file-thumbnail.vue

* components/drive-select-dialog.vue

* components/drive-window.vue

* merge

* fix

* Service Workerのビルドにesbuildを使うようにする

* return createEmptyNotification()

* fix

* fix

* i18n.ts

* update

* ✌️

* remove ts-loader

* fix

* fix

* enhance: Service Workerを常に登録するように

* pollEnded

* pollEnded

* URLをsw.jsに戻す

* clean up

* fix lint

* changelog

* alpha-test

* also with twemoji

* add isMimeImage function

* catch

* Colour => Color

* char2file => char2filePath

* Update autocomplete.vue

* remove clone?

Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>
Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
2022-06-20 00:33:46 +09:00
Andreas Nedbal 54465d36a7
Refactor page-editor elements to use Composition API (#8721)
* refactor(client): refactor page-editor elements to use Composition API

* Apply review suggestions from @Johann150

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>
2022-06-18 18:39:04 +09:00
syuilo 802a35d4b6 fix typo 2022-06-18 18:27:47 +09:00
futchitwo 5b7595d9d7
Improve: unclip (#8823)
* Refactor clip page to use Composition API

* Refactor clip page

* Refactor clip page

* Refactor clip page

* Improve: unclip

* Fix unclip

* Fix unclip

* chore: better type and name

* Fix

* Fix clipPage vue provider

Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
2022-06-18 18:27:09 +09:00
futchitwo d7bab7cf0b
Refactor clip page to Composition API (#8822)
* Refactor clip page to use Composition API

* Refactor clip page

* Refactor clip page

* Refactor clip page
2022-06-18 18:23:54 +09:00
syuilo 8df2f19b5b enhance(client): improve file moderation ui 2022-06-17 15:03:02 +09:00
syuilo 7faa75d483 chore(client): tweak range control design 2022-06-17 13:20:33 +09:00
syuilo 4a55425fdb enhance(client): improve files page of control panel 2022-06-16 16:05:43 +09:00
futchitwo b15dbb818f
Fix(client): fix wrong gallery page component (#8815) 2022-06-12 19:53:21 +09:00
syuilo 4e89d41f04 lint 2022-06-12 19:50:47 +09:00
syuilo a8e7b1a303 fix(client): デッキでウィジェットの情報が保存されない問題を修正
Fix #8818
2022-06-12 19:50:43 +09:00
syuilo ca9753f2e7 Update cropper-dialog.vue 2022-06-11 18:48:59 +09:00
syuilo 7894804eed Update cropper-dialog.vue 2022-06-11 18:47:58 +09:00
syuilo 410210cf6f fix(client): オブジェクトストレージを使用していると画像のクロップができない 2022-06-11 16:46:21 +09:00
syuilo ecb3c43520
feat: image cropping (#8808)
* wip

* wip

* wip
2022-06-11 15:45:44 +09:00
syuilo ec6b418a23 update deps 2022-06-10 15:06:42 +09:00
Johann150 5e29528ad4
chore: fix some lints automatically (#8788)
* chore: fix some lints automatically

Fixed lints that were automatically fixable with `eslint --fix`.

* fix type

* workaround for empty interface lint
2022-06-10 14:36:55 +09:00
Johann150 42f48ffea2
refactor: follow button (#8789)
* fix: display cancelling follow request

* remove unnecessary branch

The executed code is the same as in the else branch so this special
condition is unnecessary.

* remove code duplication

Use the same callback as later for updating these variables.

* use $ref sugar

* remove unused import

Co-authored-by: blackskye-sx <saul.newman@gmail.com>
2022-06-10 14:29:46 +09:00
Andreas Nedbal 7dde0b1362
fix(client): render quote renote CWs as MFM (#8792)
Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
2022-06-09 23:45:16 +09:00
Johann150 b66e73aed5
fix: use autocomplete=new-password (#8797) 2022-06-09 23:42:00 +09:00
Johann150 eec7a0a1f6
properly display alt text for videos (#8802)
The alt text is already properly federated and given by the API,
it is just not displayed properly by the client.
2022-06-09 23:35:58 +09:00
Johann150 4800dd06e5
fix: try to prevent autocomplete for emoji search (#8798) 2022-06-08 20:20:37 +09:00
syuilo 5fb3f8a116 chore: lint fixes 2022-06-05 12:26:36 +09:00
syuilo adf3190859 chore(client): fix menu item style 2022-06-05 12:23:57 +09:00
syuilo 71150f21cd Revert "feat: option to collapse long notes (#8561)"
This reverts commit e675ffcf38.
2022-06-04 15:23:53 +09:00
Balazs Nadasdi e675ffcf38
feat: option to collapse long notes (#8561)
* feat: option to collapse long notes

Closes #8559

* do not collapse if cw exists

* use '閉じる' to close / show less.

* make it sticky

* Change style of the Show less button
2022-06-04 13:57:09 +09:00
PikaDude 6061937996
User moderation details (#8762)
* add more user details for admins to see

* fix some issues

* small style fix

as suggested by Johann150

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>

* fix

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>
2022-06-03 23:14:50 +09:00
sn0w df3bbfb416
fix(client): correctly handle MiAuth URLs with query string (#8772) 2022-06-03 21:22:03 +09:00
Johann150 118f354661
fix: server metrics widget 2022-06-01 08:51:00 +02:00
Johann150 121a1784a2
fix(lint): indentation 2022-05-31 16:22:00 +02:00
tamaina 857055a9dd chore: fix import tinycolor 2022-05-30 12:09:22 +00:00
Andreas Nedbal 3905185463
fix(client): import shared ESLint config in client package (#8761) 2022-05-30 11:37:34 +09:00
futchitwo d2784030ec
fix(client): fix popout url (#8494) 2022-05-29 12:21:36 +02:00
Johann150 804fa33535
refactor: improve code quality (#8751)
* remove unnecessary if

`Array.prototype.some` already returns a boolean so an if to return
true or false is completely unnecessary in this case.

* perf: use count instead of find

When using `count` instead of `findOneBy`, the data is not
unnecessarily loaded.

* remove duplicate null check

The variable is checked for null in the lines above and the function
returns if so. Therefore, it can not be null at this point.

* simplify `getJsonSchema`

Because the assigned value is `null` and the used keys are only
shallow, use of `nestedProperty.set` seems inappropriate. Because the
value is not read, the initial for loop can be replaced by a `for..in`
loop.

Since all keys will be assigned `null`, the condition of the ternary
expression in the nested function will always be true. Therefore the
recursion case will never happen. With this the nested function can be
eliminated.

* remove duplicate condition

The code above already checks `dragging` and returns if it is truthy.
Checking it again later is therefore unnecessary.

To make this more obvious the `return` is removed in favour of using
an if...else construct.

* remove impossible "unknown" time

The `ago` variable will always be a number and all non-negative numbers
are already covered by other cases, the negative case is handled with
`future` so there is no case when `unkown` could be achieved.
2022-05-29 15:15:52 +09:00
tamaina abc8998b48
refactor: use css module at components/global/loading.vue (#8750)
* refactor: use css module at components/global/loading.vue

* rename class name to "root"
2022-05-29 00:15:32 +09:00
tamaina 4a50c49211
Fix theme import (#8749) 2022-05-28 21:59:23 +09:00
Andreas Nedbal 708fba989a
feat(tests): add e2e tests for widgets (#8735)
* test(e2e): add baseline for widget tests

* chore(repo): enable test running in branch

* fix(e2e): set viewport for widget tests

* fix(client): add widget identifier classes to widgets

* test(e2e): add memo widget test

* fix(tests): force select value

* fix(tests): force button press for widget addition

* fix(tests): invoke select value differently

* fix(tests): adjust widget submit

* fix(tests): don't explicitly navigate for widget test

* fix(tests): click label to hide select popup

* fix(tests): just click modal background

* fix(tests): adjust modal background selector

* fix(tests): click all modal backgrounds

* feat(e2e): add test for adding timeline widget

* fix(client): add more widget identifier classes

* feat(tests): add method abstraction for test cases

* fix(tests): force-click overlays

* fix(tests): force widget button press

* fix(tests): remove timeout from final widget check

* feat(tests): add widget removal test case

* fix(client): use mk instead of msky as class prefix

* fix(tests): check widgets for existence rather than visibility

* chore(meta): don't run tests for specific feature branch
2022-05-28 14:28:12 +09:00
Johann150 161659de5c
enhance: replace signin CAPTCHA with rate limit (#8740)
* enhance: rate limit works without signed in user

* fix: make limit key required for limiter

As before the fallback limiter key will be set from the endpoint name.

* enhance: use limiter for signin

* Revert "CAPTCHA求めるのは2fa認証が無効になっているときだけにした"

This reverts commit 02a43a310f.

* Revert "feat: make captcha required when signin to improve security"

This reverts commit b21b058005.

* fix undefined reference

* fix: better error message

* enhance: only handle prefix of IPv6
2022-05-28 12:06:47 +09:00
Johann150 3dae18b93c
fix lints (#8737)
* fix: emits use ev instead of e

* fix: errors use err instead of e

* fix: replace use of data where possible

* fix: events use evt instead of e

* fix: use strict equals

* fix: use emoji instead of e

* fix: vue lints
2022-05-26 22:53:09 +09:00
syuilo b3ad04fcb0 update deps 2022-05-25 23:28:56 +09:00
Johann150 429f1ad061
fix: activity widget used wrong variable name 2022-05-25 10:44:04 +02:00
Johann150 a7be9be43d
fix: server metrics widget 2022-05-25 10:13:46 +02:00
Andreas Nedbal b049633db7
Refactor widgets and fix lint issues (#8719)
* fix(client): refactor widgets and fix lint issues

* Apply review suggestions from @Johann150

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>
2022-05-25 16:43:12 +09:00
Andreas Nedbal 81fccb5656
refactor(client): refactor admin/other-settings to use Composition API (#8667) 2022-05-25 16:38:18 +09:00
Andreas Nedbal 67f3515dc1
Refactor admin/overview to use Composition API (#8674)
* refactor(client): refactor admin/overview to use Composition API

* fix(client): apply review suggestions
2022-05-25 16:37:35 +09:00
Andreas Nedbal 83b831d975
Refactor my-antennas/edit to use Composition API (#8680)
* refactor(client): refactor my-antennas/edit to use Composition API

* fix(client): apply review suggestions
2022-05-25 16:37:15 +09:00
MeiMei 6b44fe165b
Supports Unicode Emoji 14.0 (#8699)
* Unicode 14.0 Emoji

* mfm-js@0.22.0

* CHANGELOG

Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
2022-05-25 16:35:30 +09:00
Johann150 f90c947036
fix(client): wrong scoping breaks 2FA 2022-05-23 22:43:13 +02:00
Andreas Nedbal 563cb36a8f
fix(client): fix undefined data value on 2FA settings (#8725) 2022-05-23 21:55:06 +02:00
Andreas Nedbal 4bb04a2c24
chore(meta): add pixeldesu to patron list (#8714) 2022-05-21 09:48:40 +09:00
syuilo b811de53b6 fix(client): make emoji stand out more on reaction button
Fix #8520
Close #8521

Co-Authored-By: Johann150 <20990607+Johann150@users.noreply.github.com>
2022-05-19 23:23:12 +09:00
Johann150 be1d02a7f8
enhance: page image component with alt text (#8634)
* refactor to composition API

* use existing image component

This improves user experience because alt text is displayed correctly.

* fix: correct image src

* fix: defineProps

* fix
2022-05-19 20:41:47 +09:00
Johann150 60fd793bc3
enhance(MFM): limit large MFM (#8540)
* add CSS classes for zoom MFM

* limit nesting of x2, x3, x4 MFM

* simplify CSS calculation

Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>

Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>
2022-05-19 20:38:14 +09:00
xianon 0f33864df1
fix: ノート詳細ページの新しいノートを表示する機能の動作が正しくなるように修正する (#8607)
* ノート詳細で新しいノートの表示が正しくないのを修正する

* ノート詳細から別のノート詳細を表示した時に前後の表示をリセットする
2022-05-19 20:32:55 +09:00
Andreas Nedbal 3abb0d589d
refactor(client): refactor admin/settings to use Composition API (#8678) 2022-05-19 20:30:23 +09:00
Andreas Nedbal 1d9a4f68f4
Refactor pleaseLogin to show a sign-in dialog (#8630)
* refactor(client): refactor pleaseLogin to show a sign-in dialog

* Apply review suggestions from @Johann150

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>
Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
2022-05-19 20:28:08 +09:00
Andreas Nedbal a273940348
fix(client): fix lint issues in Deck UI components (#8681) 2022-05-19 17:35:43 +09:00
dependabot[bot] 3d46da64a8
chore(deps): bump async from 3.2.1 to 3.2.3 in /packages/client (#8707)
Bumps [async](https://github.com/caolan/async) from 3.2.1 to 3.2.3.
- [Release notes](https://github.com/caolan/async/releases)
- [Changelog](https://github.com/caolan/async/blob/master/CHANGELOG.md)
- [Commits](https://github.com/caolan/async/compare/v3.2.1...v3.2.3)

---
updated-dependencies:
- dependency-name: async
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-19 17:35:11 +09:00
syuilo 4702f99c83 Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop 2022-05-19 17:21:11 +09:00
syuilo 65b048bb70 chore(client): tweak loading spinner design 2022-05-19 17:21:08 +09:00
xianon 02f9e5d6f0
fix: ノートのインスタンス情報の文字に縁を付けて見やすくする (#8697)
* ノートのインスタンス情報の背景色が反映されないことがあるのを修正する

* ノートのインスタンス情報の文字に縁を付けて見やすくする

* Revert "ノートのインスタンス情報の背景色が反映されないことがあるのを修正する"

This reverts commit de920dfc537d1f2c68804d0d6930520f2b3cbce7.

* ノートのインスタンス情報の文字の影の数を増やしてさらに見やすくする
2022-05-19 16:17:00 +09:00
syuilo 4fc2058745 chore(client): tweak loading spinner design 2022-05-19 15:24:35 +09:00
MeiMei b6794b614b
enhance: Perform port diagnosis at startup only when Listen fails (#8698)
* Change port check

* Comment: disableClustering

* CHANGELOG

* Smart message
2022-05-19 11:49:07 +09:00
あずき⪥™ e3f2d469c0
remove unneeded attrs (#8673) 2022-05-18 01:34:30 +09:00
Andreas Nedbal a86e1221a0
Refactor file-dialog to use Composition API (#8661)
* refactor(client): refactor file-dialog to use Composition API

* Apply review suggestion from @Johann150

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>
2022-05-18 01:33:21 +09:00
Andreas Nedbal f03390f0b8
Refactor admin/index to use Composition API (#8662)
* refactor(client): refactor admin/index to use Composition API

* fix(client): fix navigation to initial admin pages

* Apply review suggestions from @Johann150

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>

* fix(client): re-add abuses page to admin/index

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>
2022-05-18 01:32:21 +09:00
Andreas Nedbal bf6cc34961
refactor(client): refactor admin/instance-block to use Composition API (#8663) 2022-05-18 01:31:59 +09:00
Andreas Nedbal 18307c822c
Refactor admin/integrations to use Composition API (#8664)
* refactor(client): refactor admin/integrations to use Composition API

* Apply review suggestions from @Johann150

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>
2022-05-18 01:31:48 +09:00
Andreas Nedbal 83ac6742f6
refactor(client): refactor admin/object-storage to use Composition API (#8666) 2022-05-18 01:31:32 +09:00
Andreas Nedbal 13999d953b
refactor(client): refactor admin/proxy-account to use Composition API (#8675) 2022-05-18 01:31:16 +09:00
Andreas Nedbal 7c5c27cbe3
Refactor admin/queue to use Composition API (#8676)
* refactor(client): refactor admin/queue to use Composition API

* Apply review suggestion from @Johann150

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>
2022-05-18 01:31:04 +09:00
Andreas Nedbal dfeafaf499
Refactor admin/relays to use Composition API (#8677)
* refactor(client): refactor admin/relays to use Composition API

* Apply review suggestion from @Johann150

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>
2022-05-18 01:30:49 +09:00
Andreas Nedbal 7d08b936c6
refactor(client): refactor my-antennas/index to use Composition API (#8679) 2022-05-18 01:30:35 +09:00
Andreas Nedbal d62a55b46f
Refactor emoji-edit-dialog to use Composition API (#8657)
* refactor(client): refactor emoji-edit-dialog to use Composition API

* fix(client): fix editing emoji not updating emoji list

* Apply review suggestions from @Johann150

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>

* fix(client): use cached category info instead of making a request

* fix(client): use updateItem in emoji pagination when editing

* fix(client): reimplement removeItem in MkPagination

* Apply review suggestion from @Johann150

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>
2022-05-15 22:20:01 +09:00
syuilo 504cf74b90 ビルド関係の依存関係をdevDependenciesに入れるのをやめた
本番環境でビルドできないため
2022-05-15 17:26:14 +09:00
syuilo 02a43a310f CAPTCHA求めるのは2fa認証が無効になっているときだけにした
2faのトークンは期限付きだから、CAPTCHA解いてる間に期限切れになる
2022-05-15 16:47:14 +09:00
syuilo b21b058005 feat: make captcha required when signin to improve security 2022-05-15 12:18:46 +09:00
Andreas Nedbal 657dc15995
fix(client): remove unexpected token (#8672) 2022-05-14 23:24:45 +09:00
Andreas Nedbal 3f9b7e8b1d
Refactor admin/email-settings to use Composition API (#8656)
* refactor(client): refactor admin/email-settings to use Composition API

* Update packages/client/src/pages/admin/email-settings.vue

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>

Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
Co-authored-by: Johann150 <johann@qwertqwefsday.eu>
2022-05-14 21:36:12 +09:00
Andreas Nedbal 577f63c4f4
Refactor admin/database to use Composition API (#8654)
* refactor(client): refactor admin/database to use Composition API

* Apply review suggestion from @Johann150

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>
2022-05-14 21:35:08 +09:00
Andreas Nedbal 5de77405ea
Refactor admin/security to use Composition API (#8652)
* refactor(client): refactor admin/security to use Composition API

* Apply review suggestions from @Johann150

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>
2022-05-14 21:34:50 +09:00
Andreas Nedbal 9f07bd8f46
refactor(client): refactor admin/announcements to use Composition API (#8650) 2022-05-14 21:34:07 +09:00
Andreas Nedbal cafd29888d
refactor(client): refactor admin/ads to use Composition API (#8649) 2022-05-14 21:33:41 +09:00