import { h, render } from 'preact';
import { UsernameInput } from '../../shared/components/UsernameInput';
import { UserStore } from '../../shared/components/UserStore';
import '@utilities/document_ready';
async function convertUserIdFieldToUsernameField(targetField, users, fetchUrl) {
targetField.type = 'hidden';
const inputId = `auto${targetField.id}`;
const newDiv = document.createElement('div');
targetField.parentElement.append(newDiv);
await users.fetch(fetchUrl).then(() => {
const value = users.matchingIds(targetField.value.split(','));
const fetchSuggestions = function (term) {
return users.search(term);
};
const handleSelectionsChanged = function (ids) {
targetField.value = ids;
};
render(
,
newDiv,
);
});
}
async function convertCoAuthorIdsToUsernameInputs(
targetField,
users,
fetchUrl,
) {
targetField.type = 'hidden';
const exceptAuthorId = targetField.form.querySelector(
'input[name="article[user_id]"]',
)?.value;
let searchOptions = {};
if (exceptAuthorId) {
searchOptions = { except: exceptAuthorId };
}
const inputId = `auto${targetField.id}`;
const newDiv = document.createElement('div');
targetField.parentElement.append(newDiv);
await users.fetch(fetchUrl).then(() => {
const value = users.matchingIds(targetField.value.split(','));
const fetchSuggestions = function (term) {
return users.search(term, searchOptions);
};
const handleSelectionsChanged = function (ids) {
targetField.value = ids;
};
render(
,
newDiv,
);
});
}
export async function convertCoauthorIdsToUsernameInputs() {
const users = new UserStore();
const fetchUrl = '/admin/member_manager/users.json';
const usernameFields = document.getElementsByClassName(
'js-username_id_input',
);
for (const targetField of usernameFields) {
convertUserIdFieldToUsernameField(targetField, users, fetchUrl);
}
const coAuthorFields = document.getElementsByClassName(
'js-coauthor_username_id_input',
);
for (const coAuthorField of coAuthorFields) {
convertCoAuthorIdsToUsernameInputs(coAuthorField, users, fetchUrl);
}
}
document.ready.then(() => {
convertCoauthorIdsToUsernameInputs();
});