@goodandready/dsh-subscriptions 0.2.6 → 0.2.7
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.
- package/lib/client.js +45 -2
- package/package.json +1 -1
package/lib/client.js
CHANGED
|
@@ -46,6 +46,9 @@ window.__ModuleLoader__.load({
|
|
|
46
46
|
'usageFull': 'Usage 100%',
|
|
47
47
|
'connected': 'Connected',
|
|
48
48
|
'title': 'Subscriptions',
|
|
49
|
+
'cardIntro': 'Subscription accounts, rotation and limits.',
|
|
50
|
+
'show': 'Show',
|
|
51
|
+
'hide': 'Hide',
|
|
49
52
|
'intro': 'Log in with a consumer subscription. Tokens stay on the host credentials store. The browser never reads them back. After Connect, if the provider lands on localhost or a vendor page, paste the redirected URL or the code here.',
|
|
50
53
|
'useOrigin': 'Use this Web UI origin as OAuth redirect_uri',
|
|
51
54
|
'useOriginHint': 'Leave off unless you registered your own OAuth client for this origin. Vendor CLI clients usually require their published redirect URI plus the paste step.',
|
|
@@ -73,6 +76,9 @@ window.__ModuleLoader__.load({
|
|
|
73
76
|
'usageFull': 'Лимит исчерпан',
|
|
74
77
|
'connected': 'Подключено',
|
|
75
78
|
'title': 'Подписки',
|
|
79
|
+
'cardIntro': 'Аккаунты подписок, ротация и лимиты.',
|
|
80
|
+
'show': 'Показать',
|
|
81
|
+
'hide': 'Скрыть',
|
|
76
82
|
'intro': 'Вход по обычной пользовательской подписке. Токены остаются в хранилище учётных данных харнесса, браузер их обратно не читает. Если после «Подключить» провайдер увёл на localhost или на свою страницу, вставьте сюда адрес перехода или код.',
|
|
77
83
|
'useOrigin': 'Использовать адрес этого веб-интерфейса как redirect_uri',
|
|
78
84
|
'useOriginHint': 'Включайте, только если зарегистрировали собственного клиента OAuth на этот адрес. Штатным консольным клиентам провайдеров нужен их опубликованный адрес возврата и вставка кода вручную.',
|
|
@@ -102,6 +108,26 @@ window.__ModuleLoader__.load({
|
|
|
102
108
|
return t('connected')
|
|
103
109
|
}
|
|
104
110
|
|
|
111
|
+
// Карточка во вкладке «Плагины» рисует свой заголовок и сворачивание:
|
|
112
|
+
// ядро даёт только рамку списка.
|
|
113
|
+
function PluginCard(props) {
|
|
114
|
+
const t = (props && props.t) || ((key) => key)
|
|
115
|
+
const [open, setOpen] = React.useState(false)
|
|
116
|
+
return React.createElement('div', { className: 'dsub-block' },
|
|
117
|
+
React.createElement('div', { className: 'dsub-row' },
|
|
118
|
+
React.createElement('span', { className: 'dsub-h' }, t('title')),
|
|
119
|
+
React.createElement('span', { className: 'dsub-sub' }, t('cardIntro')),
|
|
120
|
+
React.createElement('span', { style: { flex: 1 } }),
|
|
121
|
+
React.createElement('button', {
|
|
122
|
+
type: 'button',
|
|
123
|
+
className: 'dsub-mini',
|
|
124
|
+
onClick: () => setOpen(!open),
|
|
125
|
+
}, open ? t('hide') : t('show')),
|
|
126
|
+
),
|
|
127
|
+
open ? React.createElement(SubsSection, props) : null,
|
|
128
|
+
)
|
|
129
|
+
}
|
|
130
|
+
|
|
105
131
|
function SubsSection(props) {
|
|
106
132
|
// Переводчик приходит от слота, потому что в его записи указан locale.
|
|
107
133
|
const t = (props && props.t) || ((key) => key)
|
|
@@ -347,9 +373,26 @@ window.__ModuleLoader__.load({
|
|
|
347
373
|
|
|
348
374
|
function registerSettings(ctx) {
|
|
349
375
|
ctx.effect(() => ctx.locale.register(NS, { en, ru }), 'dsh-subscriptions: словари')
|
|
350
|
-
//
|
|
351
|
-
// туда не доходит, поэтому берём переводчик, привязанный к namespace.
|
|
376
|
+
// Подписи вне компонента берут переводчик, привязанный к namespace.
|
|
352
377
|
const t = ctx.locale.bind(NS)
|
|
378
|
+
// Штатное место — вкладка «Плагины»: карточка со своим заголовком и
|
|
379
|
+
// сворачиванием вместо строки в боковом списке. Ключ регистрации обязан
|
|
380
|
+
// равняться пространству настроек, иначе вкладка молча не покажет слот.
|
|
381
|
+
let moved = false
|
|
382
|
+
try {
|
|
383
|
+
moved = !!ctx.slots.inject('settings.plugin.item', () => ctx.slots.register(
|
|
384
|
+
{
|
|
385
|
+
name: 'settings.plugin.item',
|
|
386
|
+
key: NS,
|
|
387
|
+
locale: NS,
|
|
388
|
+
inject: () => ({ ctx: ctx }),
|
|
389
|
+
},
|
|
390
|
+
PluginCard,
|
|
391
|
+
))
|
|
392
|
+
} catch { moved = false }
|
|
393
|
+
if (moved) return
|
|
394
|
+
// Запасной путь для сборок без settings.plugin.item: прежний раздел,
|
|
395
|
+
// чтобы настройки не пропали.
|
|
353
396
|
ctx.slots.inject('settings.section', () => ctx.slots.register(
|
|
354
397
|
{
|
|
355
398
|
name: 'settings.section',
|
package/package.json
CHANGED