mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-04-09 20:39:29 +02:00
brought out the UsersResponse interface (#119)
This commit is contained in:
parent
3af81ca96b
commit
5c12a3e872
@ -85,12 +85,15 @@ async def demote_admin(
|
||||
|
||||
@router.get("/manage/users")
|
||||
def list_all_users(
|
||||
q: str,
|
||||
accepted_page: int,
|
||||
invited_page: int,
|
||||
q: str | None = None,
|
||||
accepted_page: int | None = None,
|
||||
invited_page: int | None = None,
|
||||
_: User | None = Depends(current_admin_user),
|
||||
db_session: Session = Depends(get_session),
|
||||
) -> AllUsersResponse:
|
||||
if not q:
|
||||
q = ""
|
||||
|
||||
users = [
|
||||
user
|
||||
for user in list_users(db_session, q=q)
|
||||
@ -106,6 +109,26 @@ def list_all_users(
|
||||
accepted_count = len(accepted_emails)
|
||||
invited_count = len(invited_emails)
|
||||
|
||||
# If any of q, accepted_page, or invited_page is None, return all users
|
||||
if accepted_page is None or invited_page is None:
|
||||
return AllUsersResponse(
|
||||
accepted=[
|
||||
FullUserSnapshot(
|
||||
id=user.id,
|
||||
email=user.email,
|
||||
role=user.role,
|
||||
status=UserStatus.LIVE
|
||||
if user.is_active
|
||||
else UserStatus.DEACTIVATED,
|
||||
)
|
||||
for user in users
|
||||
],
|
||||
invited=[InvitedUserSnapshot(email=email) for email in invited_emails],
|
||||
accepted_pages=1,
|
||||
invited_pages=1,
|
||||
)
|
||||
|
||||
# Otherwise, return paginated results
|
||||
return AllUsersResponse(
|
||||
accepted=[
|
||||
FullUserSnapshot(
|
||||
|
@ -17,6 +17,7 @@ import useSWR, { mutate } from "swr";
|
||||
import { ErrorCallout } from "@/components/ErrorCallout";
|
||||
import { HidableSection } from "@/app/admin/assistants/HidableSection";
|
||||
import BulkAdd from "@/components/admin/users/BulkAdd";
|
||||
import { UsersResponse } from "@/lib/users/interfaces";
|
||||
|
||||
const ValidDomainsDisplay = ({ validDomains }: { validDomains: string[] }) => {
|
||||
if (!validDomains.length) {
|
||||
@ -51,13 +52,6 @@ const ValidDomainsDisplay = ({ validDomains }: { validDomains: string[] }) => {
|
||||
);
|
||||
};
|
||||
|
||||
interface UsersResponse {
|
||||
accepted: User[];
|
||||
invited: User[];
|
||||
accepted_pages: number;
|
||||
invited_pages: number;
|
||||
}
|
||||
|
||||
const UsersTables = ({
|
||||
q,
|
||||
setPopup,
|
||||
|
@ -61,7 +61,7 @@ const Page = ({ params }: { params: { groupId: string } }) => {
|
||||
|
||||
{userGroup ? (
|
||||
<GroupDisplay
|
||||
users={users}
|
||||
users={users.accepted}
|
||||
ccPairs={ccPairs}
|
||||
userGroup={userGroup}
|
||||
refreshUserGroup={refreshUserGroup}
|
||||
|
@ -73,7 +73,7 @@ const Main = () => {
|
||||
setShowForm(false);
|
||||
}}
|
||||
setPopup={setPopup}
|
||||
users={users}
|
||||
users={users.accepted}
|
||||
ccPairs={ccPairs}
|
||||
/>
|
||||
)}
|
||||
|
@ -14,6 +14,7 @@ import { SourceMetadata } from "./search/interfaces";
|
||||
import { EE_ENABLED } from "./constants";
|
||||
import { destructureValue } from "./llm/utils";
|
||||
import { ChatSession } from "@/app/chat/interfaces";
|
||||
import { UsersResponse } from "./users/interfaces";
|
||||
|
||||
const CREDENTIAL_URL = "/api/manage/admin/credential";
|
||||
|
||||
@ -119,7 +120,8 @@ export function useFilters(): FilterManager {
|
||||
|
||||
export const useUsers = () => {
|
||||
const url = "/api/manage/users";
|
||||
const swrResponse = useSWR<User[]>(url, errorHandlingFetcher);
|
||||
|
||||
const swrResponse = useSWR<UsersResponse>(url, errorHandlingFetcher);
|
||||
|
||||
return {
|
||||
...swrResponse,
|
||||
|
8
web/src/lib/users/interfaces.ts
Normal file
8
web/src/lib/users/interfaces.ts
Normal file
@ -0,0 +1,8 @@
|
||||
import { User } from "../types";
|
||||
|
||||
export interface UsersResponse {
|
||||
accepted: User[];
|
||||
invited: User[];
|
||||
accepted_pages: number;
|
||||
invited_pages: number;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user