mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-19 17:38:19 +08:00
uiL rich media (problem)
This commit is contained in:
1 parent
a7f364e651
commit
fa5b2e8fee
8 files changed
+51
-16
No files matched your search
@@ -6,12 +6,33 @@ export default new AutoloadPage('media', async () => {
|
||||
const items = [];
|
||||
const resolvers = [];
|
||||
const users = $dom.find('div[data-user]');
|
||||
users.get().forEach((ele) => {
|
||||
items.push({ type: 'user', id: $(ele).text() });
|
||||
const resolve = (ele, item) => {
|
||||
items.push(item);
|
||||
resolvers.push((html) => $(ele).replaceWith($(html)));
|
||||
};
|
||||
users.get().forEach((ele) => resolve(ele, { type: 'user', id: +$(ele).text() }));
|
||||
$dom.find('.typo').get().forEach((el) => {
|
||||
$(el).find('a[href]').get().forEach((ele) => {
|
||||
let target = $(ele).attr('href');
|
||||
let { domainId } = UiContext;
|
||||
if (target.startsWith(UiContext.url_prefix)) {
|
||||
target.replace(UiContext.url_prefix, '');
|
||||
if (!target.startsWith('/')) target = `/${target}`;
|
||||
}
|
||||
if (!target.startsWith('/') || target.startsWith('//')) return;
|
||||
if (target.startsWith('/d/')) {
|
||||
const [, , domain, ...extra] = target.split('/');
|
||||
domainId = domain;
|
||||
target = `/${extra.join('/')}`;
|
||||
}
|
||||
const [, category, data, extra] = target.split('/');
|
||||
if (!data) return;
|
||||
if (category === 'user' && Number.isInteger(+data) && !extra) resolve(ele, { type: 'user', id: +data });
|
||||
if (category === 'p' && !extra) resolve(ele, { type: 'problem', id: data, domainId });
|
||||
});
|
||||
});
|
||||
if (!items.length) return;
|
||||
const res = await request.post('/media', { items });
|
||||
const res = await request.post(`/d/${UiContext.domainId}/media`, { items });
|
||||
for (let i = 0; i < res.length; i++) resolvers[i](res[i]);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user