@@ -175,8 +175,16 @@ func (ws *WebServer) handlerCreatePage(ctx *routing.Context) error {
175
175
176
176
func (ws * WebServer ) handlerGetPages (ctx * routing.Context ) error {
177
177
user := ctx .Get ("user" ).(* objects.User )
178
+ queryArgs := ctx .QueryArgs ()
179
+
180
+ sortBy := string (queryArgs .Peek ("sortBy" ))
181
+ champion := string (queryArgs .Peek ("champion" ))
182
+ short := string (queryArgs .Peek ("short" ))
183
+
184
+ if champion == "" {
185
+ champion = "general"
186
+ }
178
187
179
- sortBy := string (ctx .QueryArgs ().Peek ("sortBy" ))
180
188
var sortFunc func (i , j * objects.Page ) bool
181
189
182
190
switch sortBy {
@@ -188,13 +196,45 @@ func (ws *WebServer) handlerGetPages(ctx *routing.Context) error {
188
196
sortFunc = func (i , j * objects.Page ) bool {
189
197
return comparison .Alphabetically (i .Title , j .Title )
190
198
}
199
+ case "custom" :
200
+ if user .PageOrder != nil {
201
+ pageOrder , ok := user .PageOrder [champion ]
202
+ if ok {
203
+ sortFunc = func (i , j * objects.Page ) bool {
204
+ var pix , jix int
205
+ for ix , uid := range pageOrder {
206
+ if uid == i .UID {
207
+ pix = ix
208
+ } else if uid == j .UID {
209
+ jix = ix
210
+ }
211
+ }
212
+ return jix > pix
213
+ }
214
+ }
215
+ }
191
216
}
192
217
193
- pages , err := ws .db .GetPages (user .UID , sortFunc )
218
+ pages , err := ws .db .GetPages (user .UID , champion , sortFunc )
194
219
if err != nil {
195
220
return jsonError (ctx , err , fasthttp .StatusInternalServerError )
196
221
}
197
222
223
+ if comparison .IsTrue (short ) {
224
+ m := make (map [string ]int )
225
+ for _ , p := range pages {
226
+ for _ , c := range p .Champions {
227
+ if _ , ok := m [c ]; ! ok {
228
+ m [c ] = 1
229
+ } else {
230
+ m [c ]++
231
+ }
232
+ }
233
+ }
234
+
235
+ return jsonResponse (ctx , & listResponse {N : len (m ), Data : m }, fasthttp .StatusOK )
236
+ }
237
+
198
238
return jsonResponse (ctx , & listResponse {N : len (pages ), Data : pages }, fasthttp .StatusOK )
199
239
}
200
240
@@ -616,3 +656,30 @@ func (ws *WebServer) handlerDeleteAPIToken(ctx *routing.Context) error {
616
656
617
657
return jsonResponse (ctx , nil , fasthttp .StatusOK )
618
658
}
659
+
660
+ func (ws * WebServer ) handlerPostPageOrder (ctx * routing.Context ) error {
661
+ user := ctx .Get ("user" ).(* objects.User )
662
+
663
+ queryArgs := ctx .QueryArgs ()
664
+ champion := string (queryArgs .Peek ("champion" ))
665
+
666
+ if champion == "" {
667
+ champion = "general"
668
+ }
669
+
670
+ pageOrder := new (pageOrderRequest )
671
+ if err := parseJSONBody (ctx , pageOrder ); err != nil {
672
+ return jsonError (ctx , err , fasthttp .StatusBadRequest )
673
+ }
674
+
675
+ if user .PageOrder == nil {
676
+ user .PageOrder = make (map [string ][]snowflake.ID )
677
+ }
678
+
679
+ user .PageOrder [champion ] = pageOrder .PageOrder
680
+ if _ , err := ws .db .EditUser (user , false ); err != nil {
681
+ return jsonError (ctx , err , fasthttp .StatusInternalServerError )
682
+ }
683
+
684
+ return jsonResponse (ctx , nil , fasthttp .StatusOK )
685
+ }
0 commit comments