Skip to content

Commit 0ce0274

Browse files
fixed lastseenAt feature
1 parent 4be2a6a commit 0ce0274

File tree

11 files changed

+250
-194
lines changed

11 files changed

+250
-194
lines changed

js/dist/admin.js

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/dist/admin.js.LICENSE.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
//! moment.js
2+
3+
//! moment.js locale configuration

js/dist/admin.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/dist/forum.js

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/dist/forum.js.LICENSE.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
//! moment.js
2+
3+
//! moment.js locale configuration

js/dist/forum.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/package-lock.json

Lines changed: 24 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@
66
"@flarum/prettier-config": "^1.0.0",
77
"flarum": "^0.1.0-beta.16",
88
"flarum-webpack-config": "^2.0.0",
9+
"moment": "^2.29.4",
910
"webpack": "^5.65.0",
1011
"webpack-cli": "^4.9.1"
1112
},
1213
"devDependencies": {
13-
"prettier": "2.0.2"
14+
"prettier": "^2.5.1"
1415
},
1516
"scripts": {
1617
"dev": "webpack --mode development --watch",

js/src/common/components/WelcomeBoxWidget.js

Lines changed: 110 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -6,130 +6,141 @@ import listItems from 'flarum/helpers/listItems';
66
import AvatarEditor from 'flarum/components/AvatarEditor';
77
import SignUpModal from 'flarum/components/SignUpModal';
88
import Button from 'flarum/common/components/Button';
9+
import moment from 'moment/moment';
910

1011
export default class WelcomeBoxWidget extends Widget {
1112
oninit(vnode) {
1213
super.oninit(vnode);
1314
}
1415

15-
oncreate(vnode) {}
16-
1716
className() {
18-
// css class for the container
1917
return 'welcomebox-widget';
2018
}
2119

2220
icon() {
23-
// Widget icon.
2421
return 'fas fa-user-tie';
2522
}
2623

2724
content() {
2825
const user = app.session.user;
26+
const lastSeenAt = user?.lastSeenAt() !== null ? user?.lastSeenAt() : false;
27+
const userLang = navigator.language?.slice(0, 2);
28+
const useWidget = app.forum.attribute('justoverclock-welcomebox.UseWidget');
29+
const isGuestBoxHidden = app.forum.attribute('HideGuestBox');
2930
const SettingsLink = app.route('settings');
3031
const ImgAvatar =
3132
app.forum.attribute('imgUrl') || app.forum.attribute('baseUrl') + '/assets/extensions/justoverclock-welcomebox/no-avatar.png';
32-
if (app.forum.attribute('justoverclock-welcomebox.UseWidget') === true) {
33-
if (user) {
34-
const lastseenAt = user.data.attributes.lastSeenAt.slice(0, 10);
3533

36-
return m(
34+
if (useWidget && user) {
35+
return m(
36+
'div',
37+
{ className: 'containerwb' },
38+
m(
3739
'div',
38-
{ className: 'containerwb' },
39-
m(
40-
'div',
41-
{ className: 'backgrwb' },
42-
Button.component({
43-
icon: 'fas fa-sign-out-alt logoutt',
44-
title: app.translator.trans('core.forum.header.log_out_button'),
45-
className: 'Dropdown-toggle Button logwbox',
46-
onclick: app.session.logout.bind(app.session),
47-
}),
48-
[
49-
m('div', m('a', { href: app.route.user(user) }, m('div', { className: 'avatarwb' }, AvatarEditor.component({ user })))),
40+
{ className: 'backgrwb' },
41+
Button.component({
42+
icon: 'fas fa-sign-out-alt logoutt',
43+
title: app.translator.trans('core.forum.header.log_out_button'),
44+
className: 'Dropdown-toggle Button logwbox',
45+
onclick: app.session.logout.bind(app.session),
46+
}),
47+
[
48+
m('div', m('a', { href: app.route.user(user) }, m('div', { className: 'avatarwb' }, AvatarEditor.component({ user })))),
49+
m(
50+
'div',
51+
{ className: 'contentwb' },
5052
m(
5153
'div',
52-
{ className: 'contentwb' },
53-
m(
54-
'div',
55-
{ className: 'textinfo' },
56-
app.translator.trans('flarum-ext-welcomebox.forum.wback'),
57-
m('br'),
58-
m('strong', username(user))
59-
),
60-
m(
61-
'div',
62-
{ className: 'cont' },
63-
m('div', { className: 'circletop' }, [
64-
m(
65-
'a',
66-
{ href: SettingsLink, title: app.translator.trans('core.forum.settings.title') },
67-
m('i', { className: 'menuicon fas fa-tasks' })
68-
),
69-
m(
70-
'a',
71-
{
72-
href: app.route.user(user),
73-
title: app.translator.trans('flarum-ext-welcomebox.forum.tooltipProfile'),
74-
},
75-
m('i', { className: 'menuicon far fa-user' })
76-
),
77-
m(
78-
'a',
79-
{
80-
href: app.route.user(user) + '/mentions',
81-
title: app.translator.trans('flarum-ext-welcomebox.forum.tooltipMentions'),
82-
},
83-
m('i', { className: 'menuicon fas fa-at' })
84-
),
85-
m(
86-
'a',
87-
{
88-
href: app.route.user(user) + '/discussions',
89-
title: app.translator.trans('flarum-ext-welcomebox.forum.tooltipDisclist'),
90-
},
91-
m('i', { className: 'menuicon far fa-list-alt' })
92-
),
93-
])
94-
)
54+
{ className: 'textinfo' },
55+
app.translator.trans('flarum-ext-welcomebox.forum.wback'),
56+
m('br'),
57+
m('strong', username(user))
9558
),
96-
m('div', { className: 'iconbadge' }, listItems(user.badges().toArray())),
97-
m('.ulwb', { className: 'contentwb' }, [
98-
m('li', [
99-
m('label', { className: 'textinfo' }, app.translator.trans('flarum-ext-welcomebox.forum.npost')),
100-
': ',
101-
m('strong', { className: 'textinfo' }, formatNumber(user.commentCount())),
102-
]),
103-
m('li', [
104-
m('label', { className: 'textinfo' }, app.translator.trans('flarum-ext-welcomebox.forum.discussion')),
105-
': ',
106-
m('strong', { className: 'textinfo' }, formatNumber(user.discussionCount())),
107-
]),
108-
]),
109-
]
110-
)
111-
);
112-
} else if (!user && app.forum.attribute('HideGuestBox') === true) {
113-
return m(
114-
'div',
115-
{ className: 'containerwb' },
116-
m('div', { className: 'backgrwbguest' }, [
117-
m('img', { className: 'guestavatarimg', src: ImgAvatar }),
118-
m('div', { className: 'guesttext' }, app.translator.trans('flarum-ext-welcomebox.forum.welcomeguest')),
119-
m('p', { className: 'guestdesc' }, app.translator.trans('flarum-ext-welcomebox.forum.notregistered')),
120-
m(
121-
'button',
122-
{
123-
className: '.SplitDropdown-button Button Button--primary hasIcon',
124-
type: 'button',
125-
onclick: (componentClass, attrs) => app.modal.show(SignUpModal, attrs),
126-
},
127-
app.translator.trans('core.forum.header.sign_up_link')
59+
m(
60+
'div',
61+
{ className: 'cont' },
62+
m('div', { className: 'circletop' }, [
63+
m(
64+
'a',
65+
{ href: SettingsLink, title: app.translator.trans('core.forum.settings.title') },
66+
m('i', { className: 'menuicon fas fa-tasks' })
67+
),
68+
m(
69+
'a',
70+
{
71+
href: app.route.user(user),
72+
title: app.translator.trans('flarum-ext-welcomebox.forum.tooltipProfile'),
73+
},
74+
m('i', { className: 'menuicon far fa-user' })
75+
),
76+
m(
77+
'a',
78+
{
79+
href: app.route.user(user) + '/mentions',
80+
title: app.translator.trans('flarum-ext-welcomebox.forum.tooltipMentions'),
81+
},
82+
m('i', { className: 'menuicon fas fa-at' })
83+
),
84+
m(
85+
'a',
86+
{
87+
href: app.route.user(user) + '/discussions',
88+
title: app.translator.trans('flarum-ext-welcomebox.forum.tooltipDisclist'),
89+
},
90+
m('i', { className: 'menuicon far fa-list-alt' })
91+
),
92+
])
93+
)
12894
),
129-
m('div', { className: 'contentwb' }),
130-
])
131-
);
132-
}
95+
m('div', { className: 'iconbadge' }, listItems(user.badges().toArray())),
96+
m('.ulwb', { className: 'contentwb' }, [
97+
m('li', [
98+
m('label', { className: 'textinfo' }, app.translator.trans('flarum-ext-welcomebox.forum.npost')),
99+
': ',
100+
m('strong', { className: 'textinfo' }, formatNumber(user.commentCount())),
101+
]),
102+
m('li', [
103+
m('label', { className: 'textinfo' }, app.translator.trans('flarum-ext-welcomebox.forum.discussion')),
104+
': ',
105+
m('strong', { className: 'textinfo' }, formatNumber(user.discussionCount())),
106+
]),
107+
lastSeenAt !== null
108+
? m('li', [
109+
m('label', { className: 'textinfo' }, app.translator.trans('flarum-ext-welcomebox.forum.lastSeen')),
110+
': ',
111+
m(
112+
'strong',
113+
{ className: 'textinfo' },
114+
`${moment(lastSeenAt)
115+
.locale(userLang || 'en')
116+
.fromNow()}`
117+
),
118+
])
119+
: false,
120+
]),
121+
]
122+
)
123+
);
124+
} else if (!user && isGuestBoxHidden && useWidget) {
125+
return m(
126+
'div',
127+
{ className: 'containerwb' },
128+
m('div', { className: 'backgrwbguest' }, [
129+
m('img', { className: 'guestavatarimg', src: ImgAvatar }),
130+
m('div', { className: 'guesttext' }, app.translator.trans('flarum-ext-welcomebox.forum.welcomeguest')),
131+
m('p', { className: 'guestdesc' }, app.translator.trans('flarum-ext-welcomebox.forum.notregistered')),
132+
m(
133+
'button',
134+
{
135+
className: '.SplitDropdown-button Button Button--primary hasIcon',
136+
type: 'button',
137+
onclick: (componentClass, attrs) => app.modal.show(SignUpModal, attrs),
138+
},
139+
app.translator.trans('core.forum.header.sign_up_link')
140+
),
141+
m('div', { className: 'contentwb' }),
142+
])
143+
);
133144
}
134145
}
135146
}

0 commit comments

Comments
 (0)