nodebb-theme-persona 13.3.29 → 13.3.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/.eslintrc +2 -2
  2. package/README.md +20 -20
  3. package/lib/controllers.js +24 -24
  4. package/library.js +97 -97
  5. package/package.json +52 -52
  6. package/plugin.json +20 -20
  7. package/public/.eslintrc +2 -2
  8. package/public/admin.js +15 -15
  9. package/public/modules/autohidingnavbar.js +220 -220
  10. package/public/modules/mobile-menu.js +190 -190
  11. package/public/modules/taskbar.js +65 -65
  12. package/public/persona.js +257 -257
  13. package/public/settings.js +53 -53
  14. package/scss/account.scss +336 -336
  15. package/scss/categories.scss +205 -205
  16. package/scss/category.scss +161 -161
  17. package/scss/chats.scss +14 -14
  18. package/scss/flags.scss +42 -42
  19. package/scss/footer.scss +16 -16
  20. package/scss/groups.scss +166 -166
  21. package/scss/header.scss +361 -361
  22. package/scss/keyframes.scss +152 -152
  23. package/scss/mixins.scss +129 -129
  24. package/scss/mobile.scss +331 -331
  25. package/scss/modules/composer.scss +20 -20
  26. package/scss/modules/cookie-consent.scss +12 -12
  27. package/scss/modules/fab.scss +32 -32
  28. package/scss/modules/morph.scss +268 -268
  29. package/scss/modules/necro-post.scss +8 -8
  30. package/scss/modules/nprogress.scss +80 -80
  31. package/scss/modules/taskbar.scss +160 -160
  32. package/scss/modules/user-menu.scss +7 -7
  33. package/scss/modules/usercard.scss +64 -64
  34. package/scss/noscript.scss +80 -80
  35. package/scss/overrides.scss +39 -39
  36. package/scss/persona.scss +34 -35
  37. package/scss/posts_list.scss +127 -127
  38. package/scss/search.scss +48 -48
  39. package/scss/style.scss +256 -270
  40. package/scss/tags.scss +10 -10
  41. package/scss/topic.scss +571 -571
  42. package/scss/topics_list.scss +16 -16
  43. package/scss/variables.scss +6 -6
  44. package/templates/account/blocks.tpl +46 -46
  45. package/templates/account/categories.tpl +28 -28
  46. package/templates/account/consent.tpl +68 -68
  47. package/templates/account/edit/password.tpl +29 -29
  48. package/templates/account/edit/username.tpl +25 -25
  49. package/templates/account/edit.tpl +136 -136
  50. package/templates/account/followers.tpl +17 -17
  51. package/templates/account/following.tpl +17 -17
  52. package/templates/account/groups.tpl +16 -16
  53. package/templates/account/info.tpl +291 -291
  54. package/templates/account/posts.tpl +18 -18
  55. package/templates/account/profile.tpl +166 -166
  56. package/templates/account/sessions.tpl +31 -31
  57. package/templates/account/settings.tpl +251 -251
  58. package/templates/account/tags.tpl +9 -9
  59. package/templates/account/theme.tpl +25 -25
  60. package/templates/account/topics.tpl +29 -29
  61. package/templates/account/uploads.tpl +42 -42
  62. package/templates/admin/plugins/persona.tpl +24 -24
  63. package/templates/categories.tpl +31 -31
  64. package/templates/category.tpl +63 -63
  65. package/templates/flags/detail.tpl +208 -208
  66. package/templates/flags/list.tpl +71 -71
  67. package/templates/footer.tpl +11 -11
  68. package/templates/groups/details.tpl +77 -77
  69. package/templates/groups/list.tpl +48 -48
  70. package/templates/groups/members.tpl +5 -5
  71. package/templates/header.tpl +47 -47
  72. package/templates/modules/taskbar.tpl +2 -2
  73. package/templates/modules/usercard.tpl +36 -36
  74. package/templates/notifications.tpl +66 -66
  75. package/templates/partials/account/category-item.tpl +23 -23
  76. package/templates/partials/account/header.tpl +47 -47
  77. package/templates/partials/account/menu.tpl +108 -108
  78. package/templates/partials/breadcrumbs.tpl +18 -18
  79. package/templates/partials/buttons/newTopic.tpl +22 -22
  80. package/templates/partials/categories/item.tpl +60 -60
  81. package/templates/partials/categories/lastpost.tpl +26 -26
  82. package/templates/partials/category/filter-dropdown-content.tpl +31 -31
  83. package/templates/partials/category/selector-dropdown-content.tpl +32 -32
  84. package/templates/partials/category/sort.tpl +14 -14
  85. package/templates/partials/category/subcategory.tpl +17 -17
  86. package/templates/partials/category/tags.tpl +3 -3
  87. package/templates/partials/category/tools.tpl +86 -86
  88. package/templates/partials/category/watch.tpl +55 -55
  89. package/templates/partials/chats-menu.tpl +40 -40
  90. package/templates/partials/cookie-consent.tpl +4 -4
  91. package/templates/partials/flags/filters.tpl +173 -173
  92. package/templates/partials/groups/admin.tpl +200 -200
  93. package/templates/partials/groups/filter-dropdown-content.tpl +24 -24
  94. package/templates/partials/groups/list.tpl +20 -20
  95. package/templates/partials/groups/memberlist.tpl +42 -42
  96. package/templates/partials/header/chats.tpl +18 -18
  97. package/templates/partials/header/notifications.tpl +18 -18
  98. package/templates/partials/header/search.tpl +24 -24
  99. package/templates/partials/header/user-menu.tpl +96 -96
  100. package/templates/partials/menu.tpl +128 -128
  101. package/templates/partials/notifications_list.tpl +30 -30
  102. package/templates/partials/paginator.tpl +44 -44
  103. package/templates/partials/post_bar.tpl +20 -20
  104. package/templates/partials/posts_list.tpl +7 -7
  105. package/templates/partials/posts_list_item.tpl +31 -31
  106. package/templates/partials/quick-search-results.tpl +33 -33
  107. package/templates/partials/search-filters.tpl +183 -183
  108. package/templates/partials/search-results.tpl +54 -54
  109. package/templates/partials/slideout-menu.tpl +4 -4
  110. package/templates/partials/tags/filter-dropdown-content.tpl +33 -33
  111. package/templates/partials/tags/watch.tpl +35 -35
  112. package/templates/partials/tags_list.tpl +4 -4
  113. package/templates/partials/toast.tpl +19 -19
  114. package/templates/partials/topic/event.tpl +12 -12
  115. package/templates/partials/topic/navigation-post.tpl +11 -11
  116. package/templates/partials/topic/navigator.tpl +39 -39
  117. package/templates/partials/topic/necro-post.tpl +2 -2
  118. package/templates/partials/topic/post-menu-list.tpl +132 -132
  119. package/templates/partials/topic/post-menu.tpl +4 -4
  120. package/templates/partials/topic/post.tpl +128 -128
  121. package/templates/partials/topic/quickreply.tpl +28 -28
  122. package/templates/partials/topic/reply-button.tpl +26 -26
  123. package/templates/partials/topic/selection-tooltip.tpl +2 -2
  124. package/templates/partials/topic/sort.tpl +9 -9
  125. package/templates/partials/topic/stats.tpl +11 -11
  126. package/templates/partials/topic/tags.tpl +2 -2
  127. package/templates/partials/topic/tools.tpl +7 -7
  128. package/templates/partials/topic/topic-menu-list.tpl +74 -74
  129. package/templates/partials/topic/watch.tpl +47 -47
  130. package/templates/partials/topic-filters.tpl +11 -11
  131. package/templates/partials/topic-terms.tpl +11 -11
  132. package/templates/partials/topics_list.tpl +117 -117
  133. package/templates/partials/users/filter-dropdown-content.tpl +20 -20
  134. package/templates/partials/users/item.tpl +43 -43
  135. package/templates/partials/users_list.tpl +14 -14
  136. package/templates/partials/users_list_menu.tpl +20 -20
  137. package/templates/popular.tpl +35 -35
  138. package/templates/recent.tpl +37 -37
  139. package/templates/search.tpl +47 -47
  140. package/templates/tag.tpl +34 -34
  141. package/templates/tags.tpl +32 -32
  142. package/templates/top.tpl +35 -35
  143. package/templates/topic.tpl +129 -129
  144. package/templates/unread.tpl +37 -37
  145. package/templates/users.tpl +34 -34
  146. package/scss/register.scss +0 -71
@@ -1,190 +1,190 @@
1
- 'use strict';
2
-
3
- define('persona/mobile-menu', [
4
- 'pulling/build/pulling-drawer', 'storage', 'alerts', 'search',
5
- ], function (
6
- Pulling, Storage, alerts, search
7
- ) {
8
- const Menu = {};
9
-
10
- Menu.init = function () {
11
- if (!Pulling) {
12
- return;
13
- }
14
-
15
- // initialization
16
- const panelEl = document.getElementById('panel');
17
- const menuEl = document.getElementById('menu');
18
- const chatsMenuEl = document.getElementById('chats-menu');
19
- if (!menuEl || !chatsMenuEl) {
20
- return;
21
- }
22
- const chatMenuVisible = app.user && parseInt(app.user.uid, 10);
23
- let swapped = !!Storage.getItem('persona:menus:legacy-layout');
24
- const margin = window.innerWidth;
25
-
26
- if (swapped) {
27
- $('#mobile-menu').removeClass('float-start');
28
- $('#mobile-chats').addClass('float-start');
29
- }
30
-
31
- if (document.documentElement.getAttribute('data-dir') === 'rtl') {
32
- swapped = !swapped;
33
- }
34
-
35
- const navSlideout = Pulling.create({
36
- panel: panelEl,
37
- menu: menuEl,
38
- width: 256,
39
- margin: margin,
40
- side: swapped ? 'right' : 'left',
41
- });
42
- $('#menu').removeClass('hidden');
43
-
44
- let chatsSlideout;
45
- if (chatMenuVisible) {
46
- chatsSlideout = Pulling.create({
47
- panel: panelEl,
48
- menu: chatsMenuEl,
49
- width: 256,
50
- margin: margin,
51
- side: swapped ? 'left' : 'right',
52
- });
53
- $('#chats-menu').removeClass('hidden');
54
- }
55
-
56
- // all menus
57
-
58
- function closeOnClick() {
59
- navSlideout.close();
60
- if (chatsSlideout) { chatsSlideout.close(); }
61
- }
62
-
63
- function onBeforeOpen() {
64
- document.documentElement.classList.add('slideout-open');
65
- }
66
-
67
- function onClose() {
68
- $('#mobile-menu').blur();
69
- document.documentElement.classList.remove('slideout-open');
70
- $('#panel').off('click', closeOnClick);
71
- }
72
-
73
- $(window).on('resize action:ajaxify.start', function () {
74
- navSlideout.close();
75
- if (chatsSlideout) {
76
- chatsSlideout.close();
77
- }
78
- });
79
-
80
- navSlideout
81
- .ignore('code, code *, .preventSlideout, .preventSlideout *')
82
- .on('closed', onClose)
83
- .on('beforeopen', onBeforeOpen)
84
- .on('opened', function () {
85
- $('#panel').one('click', closeOnClick);
86
- });
87
-
88
- if (chatMenuVisible) {
89
- chatsSlideout
90
- .ignore('code, code *, .preventSlideout, .preventSlideout *')
91
- .on('closed', onClose)
92
- .on('beforeopen', onBeforeOpen)
93
- .on('opened', function () {
94
- $('#panel').one('click', closeOnClick);
95
- });
96
- }
97
-
98
- // left slideout navigation menu
99
-
100
- $('#mobile-menu').on('click', function () {
101
- navSlideout.enable().toggle();
102
- });
103
-
104
- if (chatMenuVisible) {
105
- navSlideout.on('beforeopen', function () {
106
- chatsSlideout.close();
107
- chatsSlideout.disable();
108
- }).on('closed', function () {
109
- chatsSlideout.enable();
110
- });
111
- }
112
-
113
- $('#menu [data-section="navigation"] ul').html(
114
- $('#main-nav').html() +
115
- ($('#logged-out-menu').html() || '')
116
- );
117
-
118
- $('#user-control-list').children().clone(true, true).appendTo($('#chats-menu [data-section="profile"] ul'));
119
-
120
- socket.on('event:user_status_change', function (data) {
121
- if (parseInt(data.uid, 10) === app.user.uid) {
122
- app.updateUserStatus($('#chats-menu [component="user/status"]'), data.status);
123
- navSlideout.close();
124
- }
125
- });
126
-
127
- // right slideout notifications & chats menu
128
-
129
- function loadNotificationsAndChats() {
130
- require(['notifications', 'chat'], function (notifications, chat) {
131
- const notifList = $('#chats-menu [data-section="notifications"] ul');
132
- notifications.loadNotifications(notifList, function () {
133
- notifList.find('.deco-none').removeClass('deco-none');
134
- chat.loadChatsDropdown($('#chats-menu .chat-list'));
135
- });
136
- });
137
- }
138
-
139
- if (chatMenuVisible) {
140
- $('#mobile-chats').removeClass('hidden').on('click', function () {
141
- navSlideout.close();
142
- chatsSlideout.enable().toggle();
143
- });
144
- $('#chats-menu').on('click', 'li[data-roomid]', function () {
145
- chatsSlideout.close();
146
- });
147
-
148
- chatsSlideout
149
- .on('opened', loadNotificationsAndChats)
150
- .on('beforeopen', function () {
151
- navSlideout.close().disable();
152
- })
153
- .on('closed', function () {
154
- navSlideout.enable();
155
- });
156
- }
157
-
158
- const searchInputEl = $('.navbar .navbar-search input[name="term"]');
159
- const searchButton = $('.navbar .navbar-search button[type="button"]');
160
- searchButton.off('click').on('click', function () {
161
- if (!config.loggedIn && !app.user.privileges['search:content']) {
162
- alerts.alert({
163
- message: '[[error:search-requires-login]]',
164
- timeout: 3000,
165
- });
166
- ajaxify.go('login');
167
- return false;
168
- }
169
-
170
- searchButton.addClass('hidden');
171
- searchInputEl.removeClass('hidden').focus();
172
- return false;
173
- });
174
- searchInputEl.on('blur', function () {
175
- searchInputEl.addClass('hidden');
176
- searchButton.removeClass('hidden');
177
- });
178
- search.enableQuickSearch({
179
- searchElements: {
180
- inputEl: searchInputEl,
181
- resultEl: $('.navbar .navbar-search .quick-search-container'),
182
- },
183
- searchOptions: {
184
- in: config.searchDefaultInQuick,
185
- },
186
- });
187
- };
188
-
189
- return Menu;
190
- });
1
+ 'use strict';
2
+
3
+ define('persona/mobile-menu', [
4
+ 'pulling/build/pulling-drawer', 'storage', 'alerts', 'search',
5
+ ], function (
6
+ Pulling, Storage, alerts, search
7
+ ) {
8
+ const Menu = {};
9
+
10
+ Menu.init = function () {
11
+ if (!Pulling) {
12
+ return;
13
+ }
14
+
15
+ // initialization
16
+ const panelEl = document.getElementById('panel');
17
+ const menuEl = document.getElementById('menu');
18
+ const chatsMenuEl = document.getElementById('chats-menu');
19
+ if (!menuEl || !chatsMenuEl) {
20
+ return;
21
+ }
22
+ const chatMenuVisible = app.user && parseInt(app.user.uid, 10);
23
+ let swapped = !!Storage.getItem('persona:menus:legacy-layout');
24
+ const margin = window.innerWidth;
25
+
26
+ if (swapped) {
27
+ $('#mobile-menu').removeClass('float-start');
28
+ $('#mobile-chats').addClass('float-start');
29
+ }
30
+
31
+ if (document.documentElement.getAttribute('data-dir') === 'rtl') {
32
+ swapped = !swapped;
33
+ }
34
+
35
+ const navSlideout = Pulling.create({
36
+ panel: panelEl,
37
+ menu: menuEl,
38
+ width: 256,
39
+ margin: margin,
40
+ side: swapped ? 'right' : 'left',
41
+ });
42
+ $('#menu').removeClass('hidden');
43
+
44
+ let chatsSlideout;
45
+ if (chatMenuVisible) {
46
+ chatsSlideout = Pulling.create({
47
+ panel: panelEl,
48
+ menu: chatsMenuEl,
49
+ width: 256,
50
+ margin: margin,
51
+ side: swapped ? 'left' : 'right',
52
+ });
53
+ $('#chats-menu').removeClass('hidden');
54
+ }
55
+
56
+ // all menus
57
+
58
+ function closeOnClick() {
59
+ navSlideout.close();
60
+ if (chatsSlideout) { chatsSlideout.close(); }
61
+ }
62
+
63
+ function onBeforeOpen() {
64
+ document.documentElement.classList.add('slideout-open');
65
+ }
66
+
67
+ function onClose() {
68
+ $('#mobile-menu').blur();
69
+ document.documentElement.classList.remove('slideout-open');
70
+ $('#panel').off('click', closeOnClick);
71
+ }
72
+
73
+ $(window).on('resize action:ajaxify.start', function () {
74
+ navSlideout.close();
75
+ if (chatsSlideout) {
76
+ chatsSlideout.close();
77
+ }
78
+ });
79
+
80
+ navSlideout
81
+ .ignore('code, code *, .preventSlideout, .preventSlideout *')
82
+ .on('closed', onClose)
83
+ .on('beforeopen', onBeforeOpen)
84
+ .on('opened', function () {
85
+ $('#panel').one('click', closeOnClick);
86
+ });
87
+
88
+ if (chatMenuVisible) {
89
+ chatsSlideout
90
+ .ignore('code, code *, .preventSlideout, .preventSlideout *')
91
+ .on('closed', onClose)
92
+ .on('beforeopen', onBeforeOpen)
93
+ .on('opened', function () {
94
+ $('#panel').one('click', closeOnClick);
95
+ });
96
+ }
97
+
98
+ // left slideout navigation menu
99
+
100
+ $('#mobile-menu').on('click', function () {
101
+ navSlideout.enable().toggle();
102
+ });
103
+
104
+ if (chatMenuVisible) {
105
+ navSlideout.on('beforeopen', function () {
106
+ chatsSlideout.close();
107
+ chatsSlideout.disable();
108
+ }).on('closed', function () {
109
+ chatsSlideout.enable();
110
+ });
111
+ }
112
+
113
+ $('#menu [data-section="navigation"] ul').html(
114
+ $('#main-nav').html() +
115
+ ($('#logged-out-menu').html() || '')
116
+ );
117
+
118
+ $('#user-control-list').children().clone(true, true).appendTo($('#chats-menu [data-section="profile"] ul'));
119
+
120
+ socket.on('event:user_status_change', function (data) {
121
+ if (parseInt(data.uid, 10) === app.user.uid) {
122
+ app.updateUserStatus($('#chats-menu [component="user/status"]'), data.status);
123
+ navSlideout.close();
124
+ }
125
+ });
126
+
127
+ // right slideout notifications & chats menu
128
+
129
+ function loadNotificationsAndChats() {
130
+ require(['notifications', 'chat'], function (notifications, chat) {
131
+ const notifList = $('#chats-menu [data-section="notifications"] ul');
132
+ notifications.loadNotifications(notifList, function () {
133
+ notifList.find('.deco-none').removeClass('deco-none');
134
+ chat.loadChatsDropdown($('#chats-menu .chat-list'));
135
+ });
136
+ });
137
+ }
138
+
139
+ if (chatMenuVisible) {
140
+ $('#mobile-chats').removeClass('hidden').on('click', function () {
141
+ navSlideout.close();
142
+ chatsSlideout.enable().toggle();
143
+ });
144
+ $('#chats-menu').on('click', 'li[data-roomid]', function () {
145
+ chatsSlideout.close();
146
+ });
147
+
148
+ chatsSlideout
149
+ .on('opened', loadNotificationsAndChats)
150
+ .on('beforeopen', function () {
151
+ navSlideout.close().disable();
152
+ })
153
+ .on('closed', function () {
154
+ navSlideout.enable();
155
+ });
156
+ }
157
+
158
+ const searchInputEl = $('.navbar .navbar-search input[name="term"]');
159
+ const searchButton = $('.navbar .navbar-search button[type="button"]');
160
+ searchButton.off('click').on('click', function () {
161
+ if (!config.loggedIn && !app.user.privileges['search:content']) {
162
+ alerts.alert({
163
+ message: '[[error:search-requires-login]]',
164
+ timeout: 3000,
165
+ });
166
+ ajaxify.go('login');
167
+ return false;
168
+ }
169
+
170
+ searchButton.addClass('hidden');
171
+ searchInputEl.removeClass('hidden').focus();
172
+ return false;
173
+ });
174
+ searchInputEl.on('blur', function () {
175
+ searchInputEl.addClass('hidden');
176
+ searchButton.removeClass('hidden');
177
+ });
178
+ search.enableQuickSearch({
179
+ searchElements: {
180
+ inputEl: searchInputEl,
181
+ resultEl: $('.navbar .navbar-search .quick-search-container'),
182
+ },
183
+ searchOptions: {
184
+ in: config.searchDefaultInQuick,
185
+ },
186
+ });
187
+ };
188
+
189
+ return Menu;
190
+ });
@@ -1,65 +1,65 @@
1
- 'use strict';
2
-
3
- define('persona/taskbar', [
4
- 'hooks',
5
- ], function (
6
- hooks
7
- ) {
8
- const Taskbar = {};
9
-
10
- Taskbar.init = function () {
11
- hooks.on('filter:taskbar.push', (data) => {
12
- data.options.className = 'taskbar-' + data.module;
13
- if (data.module === 'composer') {
14
- data.options.icon = 'fa-commenting-o';
15
- } else if (data.module === 'chat') {
16
- if (data.element.length && !data.element.hasClass('active')) {
17
- increaseChatCount(data.element);
18
- }
19
- }
20
- });
21
- hooks.on('action:taskbar.pushed', (data) => {
22
- if (data.module === 'chat') {
23
- createChatIcon(data);
24
- const elData = data.element.data();
25
- if (elData && elData.options && !elData.options.isSelf) {
26
- increaseChatCount(data.element);
27
- }
28
- }
29
- });
30
-
31
- socket.on('event:chats.markedAsRead', function (data) {
32
- $('#taskbar [data-roomid="' + data.roomId + '"]')
33
- .removeClass('new')
34
- .attr('data-content', 0);
35
- });
36
-
37
- function createChatIcon(data) {
38
- $.getJSON(config.relative_path + '/api/user/' + app.user.userslug + '/chats/' + data.options.roomId, function (chatObj) {
39
- const el = $('#taskbar [data-uuid="' + data.uuid + '"] a');
40
- el.parent('[data-uuid]').attr('data-roomId', data.options.roomId);
41
-
42
- if (chatObj.users.length === 1) {
43
- const user = chatObj.users[0];
44
- el.find('i').remove();
45
-
46
- if (user.picture) {
47
- el.css('background-image', 'url(' + user.picture + ')');
48
- el.css('background-size', 'cover');
49
- } else {
50
- el.css('background-color', user['icon:bgColor'])
51
- .text(user['icon:text'])
52
- .addClass('avatar');
53
- }
54
- }
55
- });
56
- }
57
-
58
- function increaseChatCount(el) {
59
- const count = (parseInt($(el).attr('data-content'), 10) || 0) + 1;
60
- $(el).attr('data-content', count);
61
- }
62
- };
63
-
64
- return Taskbar;
65
- });
1
+ 'use strict';
2
+
3
+ define('persona/taskbar', [
4
+ 'hooks',
5
+ ], function (
6
+ hooks
7
+ ) {
8
+ const Taskbar = {};
9
+
10
+ Taskbar.init = function () {
11
+ hooks.on('filter:taskbar.push', (data) => {
12
+ data.options.className = 'taskbar-' + data.module;
13
+ if (data.module === 'composer') {
14
+ data.options.icon = 'fa-commenting-o';
15
+ } else if (data.module === 'chat') {
16
+ if (data.element.length && !data.element.hasClass('active')) {
17
+ increaseChatCount(data.element);
18
+ }
19
+ }
20
+ });
21
+ hooks.on('action:taskbar.pushed', (data) => {
22
+ if (data.module === 'chat') {
23
+ createChatIcon(data);
24
+ const elData = data.element.data();
25
+ if (elData && elData.options && !elData.options.isSelf) {
26
+ increaseChatCount(data.element);
27
+ }
28
+ }
29
+ });
30
+
31
+ socket.on('event:chats.markedAsRead', function (data) {
32
+ $('#taskbar [data-roomid="' + data.roomId + '"]')
33
+ .removeClass('new')
34
+ .attr('data-content', 0);
35
+ });
36
+
37
+ function createChatIcon(data) {
38
+ $.getJSON(config.relative_path + '/api/user/' + app.user.userslug + '/chats/' + data.options.roomId, function (chatObj) {
39
+ const el = $('#taskbar [data-uuid="' + data.uuid + '"] a');
40
+ el.parent('[data-uuid]').attr('data-roomId', data.options.roomId);
41
+
42
+ if (chatObj.users.length === 1) {
43
+ const user = chatObj.users[0];
44
+ el.find('i').remove();
45
+
46
+ if (user.picture) {
47
+ el.css('background-image', 'url(' + user.picture + ')');
48
+ el.css('background-size', 'cover');
49
+ } else {
50
+ el.css('background-color', user['icon:bgColor'])
51
+ .text(user['icon:text'])
52
+ .addClass('avatar');
53
+ }
54
+ }
55
+ });
56
+ }
57
+
58
+ function increaseChatCount(el) {
59
+ const count = (parseInt($(el).attr('data-content'), 10) || 0) + 1;
60
+ $(el).attr('data-content', count);
61
+ }
62
+ };
63
+
64
+ return Taskbar;
65
+ });