brought out the UsersResponse interface (#119)

This commit is contained in:
hagen-danswer
2024-06-21 19:36:31 -07:00
committed by Chris Weaver
parent 3af81ca96b
commit 5c12a3e872
6 changed files with 40 additions and 13 deletions

View File

@@ -85,12 +85,15 @@ async def demote_admin(
@router.get("/manage/users") @router.get("/manage/users")
def list_all_users( def list_all_users(
q: str, q: str | None = None,
accepted_page: int, accepted_page: int | None = None,
invited_page: int, invited_page: int | None = None,
_: User | None = Depends(current_admin_user), _: User | None = Depends(current_admin_user),
db_session: Session = Depends(get_session), db_session: Session = Depends(get_session),
) -> AllUsersResponse: ) -> AllUsersResponse:
if not q:
q = ""
users = [ users = [
user user
for user in list_users(db_session, q=q) for user in list_users(db_session, q=q)
@@ -106,6 +109,26 @@ def list_all_users(
accepted_count = len(accepted_emails) accepted_count = len(accepted_emails)
invited_count = len(invited_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( return AllUsersResponse(
accepted=[ accepted=[
FullUserSnapshot( FullUserSnapshot(

View File

@@ -17,6 +17,7 @@ import useSWR, { mutate } from "swr";
import { ErrorCallout } from "@/components/ErrorCallout"; import { ErrorCallout } from "@/components/ErrorCallout";
import { HidableSection } from "@/app/admin/assistants/HidableSection"; import { HidableSection } from "@/app/admin/assistants/HidableSection";
import BulkAdd from "@/components/admin/users/BulkAdd"; import BulkAdd from "@/components/admin/users/BulkAdd";
import { UsersResponse } from "@/lib/users/interfaces";
const ValidDomainsDisplay = ({ validDomains }: { validDomains: string[] }) => { const ValidDomainsDisplay = ({ validDomains }: { validDomains: string[] }) => {
if (!validDomains.length) { 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 = ({ const UsersTables = ({
q, q,
setPopup, setPopup,

View File

@@ -61,7 +61,7 @@ const Page = ({ params }: { params: { groupId: string } }) => {
{userGroup ? ( {userGroup ? (
<GroupDisplay <GroupDisplay
users={users} users={users.accepted}
ccPairs={ccPairs} ccPairs={ccPairs}
userGroup={userGroup} userGroup={userGroup}
refreshUserGroup={refreshUserGroup} refreshUserGroup={refreshUserGroup}

View File

@@ -73,7 +73,7 @@ const Main = () => {
setShowForm(false); setShowForm(false);
}} }}
setPopup={setPopup} setPopup={setPopup}
users={users} users={users.accepted}
ccPairs={ccPairs} ccPairs={ccPairs}
/> />
)} )}

View File

@@ -14,6 +14,7 @@ import { SourceMetadata } from "./search/interfaces";
import { EE_ENABLED } from "./constants"; import { EE_ENABLED } from "./constants";
import { destructureValue } from "./llm/utils"; import { destructureValue } from "./llm/utils";
import { ChatSession } from "@/app/chat/interfaces"; import { ChatSession } from "@/app/chat/interfaces";
import { UsersResponse } from "./users/interfaces";
const CREDENTIAL_URL = "/api/manage/admin/credential"; const CREDENTIAL_URL = "/api/manage/admin/credential";
@@ -119,7 +120,8 @@ export function useFilters(): FilterManager {
export const useUsers = () => { export const useUsers = () => {
const url = "/api/manage/users"; const url = "/api/manage/users";
const swrResponse = useSWR<User[]>(url, errorHandlingFetcher);
const swrResponse = useSWR<UsersResponse>(url, errorHandlingFetcher);
return { return {
...swrResponse, ...swrResponse,

View File

@@ -0,0 +1,8 @@
import { User } from "../types";
export interface UsersResponse {
accepted: User[];
invited: User[];
accepted_pages: number;
invited_pages: number;
}