summaryrefslogtreecommitdiffstats
path: root/ui/src/interfaces.ts
blob: d499eb0a7554e7c20a0f23b5888f924c7510a764 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
export enum UserOperation {
  Login, Register, CreateCommunity, CreatePost, ListCommunities, GetPost, GetCommunity, CreateComment, CreateCommentLike
}

export interface User {
  id: number;
  username: string;
}

export interface Community {
  id: number;
  name: string;
  published: string;
  updated?: string;
}

export interface CommunityForm {
  name: string;
  auth?: string;
}

export interface CommunityResponse {
  op: string;
  community: Community;
}

export interface ListCommunitiesResponse {
  op: string;
  communities: Array<Community>;
}

export interface Post {
  id: number;
  name: string;
  url?: string;
  body?: string;
  attributed_to: string;
  community_id: number;
  published: string;
  updated?: string;
}

export interface PostForm {
  name: string;
  url?: string;
  body?: string;
  community_id: number;
  updated?: number;
  auth: string;
}

export interface PostResponse {
  op: string;
  post: Post;
  comments: Array<Comment>;
}

export interface Comment {
  id: number;
  content: string;
  attributed_to: string;
  post_id: number,
  parent_id?: number;
  published: string;
  updated?: string;
  score: number;
  upvotes: number;
  downvotes: number;
  my_vote?: number;
}

export interface CommentForm {
  content: string;
  post_id: number;
  parent_id?: number;
  auth: string;
}

export interface CommentResponse {
  op: string;
  comment: Comment;
}

export interface CommentLikeForm {
  comment_id: number;
  post_id: number;
  score: number;
  auth?: string;
}

export interface CreateCommentLikeResponse {
  op: string;
  comment: Comment;
}

export interface LoginForm {
  username_or_email: string;
  password: string;
}

export interface RegisterForm {
  username: string;
  email?: string;
  password: string;
  password_verify: string;
}

export interface LoginResponse {
  op: string;
  jwt: string;
}