{
setUserSearchText(v);
}}
loading={userSearchState.type === "loading"}
onButtonClick={() => {
if (userSearchText === "") {
setUserSearchState({
type: "error",
data: "login.emptyUsername",
});
return;
}
setUserSearchState({ type: "loading" });
getHttpSearchClient()
.searchUsers(userSearchText)
.then(
(users) => {
users = users.filter(
(user) =>
timeline.members.findIndex(
(m) => m.username === user.username,
) === -1 && timeline.owner.username !== user.username,
);
setUserSearchState({ type: "users", data: users });
},
(e) => {
setUserSearchState({
type: "error",
data: { type: "custom", value: String(e) },
});
},
);
}}
/>
{(() => {
if (userSearchState.type === "users") {
const users = userSearchState.data;
if (users.length === 0) {
return {t("timeline.member.noUserAvailableToAdd")}
;
} else {
return (
{users.map((user) => (
{
void getHttpTimelineClient()
.memberPut(
timeline.owner.username,
timeline.nameV2,
user.username,
)
.then(() => {
setUserSearchText("");
setUserSearchState({ type: "init" });
onChange();
});
}}
/>
))}
);
}
} else if (userSearchState.type === "error") {
return (
{convertI18nText(userSearchState.data, t)}
);
}
})()}