import { IIssueActivity, IIssueLite, TStateGroups } from ".";

export interface IUser {
  id: string;
  avatar: string;
  cover_image: string | null;
  date_joined: string;
  display_name: string;
  email: string;
  first_name: string;
  last_name: string;
  is_active: boolean;
  is_bot: boolean;
  is_email_verified: boolean;
  is_managed: boolean;
  is_onboarded: boolean;
  is_password_autoset: boolean;
  is_tour_completed: boolean;
  mobile_number: string | null;
  role: string | null;
  onboarding_step: {
    workspace_join?: boolean;
    profile_complete?: boolean;
    workspace_create?: boolean;
    workspace_invite?: boolean;
  };
  last_workspace_id: string;
  user_timezone: string;
  username: string;
  theme: IUserTheme;
  use_case?: string;
}

export interface IInstanceAdminStatus {
  is_instance_admin: boolean;
}

export interface IUserSettings {
  id: string;
  email: string;
  workspace: {
    last_workspace_id: string;
    last_workspace_slug: string;
    fallback_workspace_id: string;
    fallback_workspace_slug: string;
    invites: number;
  };
}

export interface IUserTheme {
  background: string;
  text: string;
  primary: string;
  sidebarBackground: string;
  sidebarText: string;
  darkPalette: boolean;
  palette: string;
  theme: string;
}

export interface IUserLite {
  avatar: string;
  created_at: Date;
  display_name: string;
  email?: string;
  first_name: string;
  readonly id: string;
  is_bot: boolean;
  last_name: string;
}

export interface IUserMemberLite extends IUserLite {
  email?: string;
}

export interface IUserActivity {
  created_date: string;
  activity_count: number;
}

export interface IUserPriorityDistribution {
  priority: string;
  priority_count: number;
}

export interface IUserStateDistribution {
  state_group: TStateGroups;
  state_count: number;
}

export interface IUserWorkspaceDashboard {
  assigned_issues_count: number;
  completed_issues_count: number;
  issue_activities: IUserActivity[];
  issues_due_week_count: number;
  overdue_issues: IIssueLite[];
  completed_issues: {
    week_in_month: number;
    completed_count: number;
  }[];
  pending_issues_count: number;
  state_distribution: IUserStateDistribution[];
  upcoming_issues: IIssueLite[];
}

export interface IUserActivityResponse {
  count: number;
  extra_stats: null;
  next_cursor: string;
  next_page_results: boolean;
  prev_cursor: string;
  prev_page_results: boolean;
  results: IIssueActivity[];
  total_pages: number;
}

export type UserAuth = {
  isMember: boolean;
  isOwner: boolean;
  isViewer: boolean;
  isGuest: boolean;
};

export type TOnboardingSteps = {
  profile_complete: boolean;
  workspace_create: boolean;
  workspace_invite: boolean;
  workspace_join: boolean;
};

export interface IUserProfileData {
  assigned_issues: number;
  completed_issues: number;
  created_issues: number;
  pending_issues: number;
  priority_distribution: IUserPriorityDistribution[];
  state_distribution: IUserStateDistribution[];
  subscribed_issues: number;
}

export interface IUserProfileProjectSegregation {
  project_data: {
    assigned_issues: number;
    completed_issues: number;
    created_issues: number;
    emoji: string | null;
    icon_prop: null;
    id: string;
    identifier: string;
    name: string;
    pending_issues: number;
  }[];
  user_data: {
    avatar: string;
    cover_image: string | null;
    date_joined: Date;
    display_name: string;
    first_name: string;
    last_name: string;
    user_timezone: string;
  };
}

// export interface ICurrentUser {
//   id: readonly string;
//   avatar: string;
//   first_name: string;
//   last_name: string;
//   username: string;
//   email: string;
//   mobile_number: string;
//   is_email_verified: boolean;
//   is_tour_completed: boolean;
//   onboarding_step: TOnboardingSteps;
//   is_onboarded: boolean;
//   role: string;
// }

// export interface ICustomTheme {
//   background: string;
//   text: string;
//   primary: string;
//   sidebarBackground: string;
//   sidebarText: string;
//   darkPalette: boolean;
//   palette: string;
//   theme: string;
// }

// export interface ICurrentUserSettings {
//   theme: ICustomTheme;
// }