summaryrefslogtreecommitdiff
path: root/src/client/widgets
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2020-12-30 13:07:16 +0900
committersyuilo <syuilotan@yahoo.co.jp>2020-12-30 13:07:16 +0900
commit10cb15b000d22e488521bbdf04bbce526e7b044f (patch)
tree23fbde09de6e9071ee997eb8b703bbbaefc53946 /src/client/widgets
parentclean up (diff)
downloadmisskey-10cb15b000d22e488521bbdf04bbce526e7b044f.tar.gz
misskey-10cb15b000d22e488521bbdf04bbce526e7b044f.tar.bz2
misskey-10cb15b000d22e488521bbdf04bbce526e7b044f.zip
nanka iroiro
Diffstat (limited to 'src/client/widgets')
-rw-r--r--src/client/widgets/index.ts2
-rw-r--r--src/client/widgets/online-users.vue67
2 files changed, 69 insertions, 0 deletions
diff --git a/src/client/widgets/index.ts b/src/client/widgets/index.ts
index 2095a5be1b..2c99a73079 100644
--- a/src/client/widgets/index.ts
+++ b/src/client/widgets/index.ts
@@ -14,6 +14,7 @@ export default function(app: App) {
app.component('MkwFederation', defineAsyncComponent(() => import('./federation.vue')));
app.component('MkwPostForm', defineAsyncComponent(() => import('./post-form.vue')));
app.component('MkwSlideshow', defineAsyncComponent(() => import('./slideshow.vue')));
+ app.component('MkwOnlineUsers', defineAsyncComponent(() => import('./online-users.vue')));
app.component('MkwButton', defineAsyncComponent(() => import('./button.vue')));
}
@@ -31,5 +32,6 @@ export const widgets = [
'federation',
'postForm',
'slideshow',
+ 'onlineUsers',
'button',
];
diff --git a/src/client/widgets/online-users.vue b/src/client/widgets/online-users.vue
new file mode 100644
index 0000000000..5b889f4816
--- /dev/null
+++ b/src/client/widgets/online-users.vue
@@ -0,0 +1,67 @@
+<template>
+<div class="mkw-onlineUsers" :class="{ _panel: !props.transparent, pad: !props.transparent }">
+ <I18n v-if="onlineUsersCount" :src="$ts.onlineUsersCount" text-tag="span" class="text">
+ <template #n><b>{{ onlineUsersCount }}</b></template>
+ </I18n>
+</div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import define from './define';
+import * as os from '@/os';
+
+const widget = define({
+ name: 'onlineUsers',
+ props: () => ({
+ transparent: {
+ type: 'boolean',
+ default: true,
+ },
+ })
+});
+
+export default defineComponent({
+ extends: widget,
+ data() {
+ return {
+ onlineUsersCount: null,
+ clock: null,
+ };
+ },
+ created() {
+ this.tick();
+ this.clock = setInterval(this.tick, 1000 * 15);
+ },
+ beforeUnmount() {
+ clearInterval(this.clock);
+ },
+ methods: {
+ tick() {
+ os.api('get-online-users-count').then(res => {
+ this.onlineUsersCount = res.count;
+ });
+ }
+ }
+});
+</script>
+
+<style lang="scss" scoped>
+.mkw-onlineUsers {
+ text-align: center;
+
+ &.pad {
+ padding: 16px 0;
+ }
+
+ > .text {
+ ::v-deep(b) {
+ color: #41b781;
+ }
+
+ ::v-deep(span) {
+ opacity: 0.7;
+ }
+ }
+}
+</style>