Compare commits

...
Sign in to create a new pull request.

2 commits

Author SHA1 Message Date
Joey Yakimowich-Payne
66fbb7c44d Cleanup unused imports and compiler warnings 2020-02-15 18:53:09 -07:00
Joey Yakimowich-Payne
85ea229f7f Get rid of casts 2020-02-15 18:41:59 -07:00
23 changed files with 58 additions and 55 deletions

2
.gitignore vendored
View file

@ -12,3 +12,5 @@ nimcache/
forum forum
createdb createdb
editdb editdb
.vscode

View file

@ -1,11 +1,11 @@
when defined(js): when defined(js):
import sugar, httpcore, options, json import sugar, httpcore
import dom except Event import dom except Event
include karax/prelude include karax/prelude
import karax / [kajax, kdom] import karax / [kajax]
import error, replybox, threadlist, post import error
import karaxutils import karaxutils
type type

View file

@ -5,7 +5,7 @@ when defined(js):
include karax/prelude include karax/prelude
import karax / [kajax, kdom] import karax / [kajax, kdom]
import error, replybox, threadlist, post import error
import karaxutils import karaxutils
type type
@ -13,17 +13,12 @@ when defined(js):
loading: bool loading: bool
status: HttpCode status: HttpCode
error: Option[PostError] error: Option[PostError]
newPassword: kstring
proc newActivateEmail*(): ActivateEmail = proc newActivateEmail*(): ActivateEmail =
ActivateEmail( ActivateEmail(
status: Http200, status: Http200
newPassword: ""
) )
proc onPassChange(e: Event, n: VNode, state: ActivateEmail) =
state.newPassword = n.value
proc onPost(httpStatus: int, response: kstring, state: ActivateEmail) = proc onPost(httpStatus: int, response: kstring, state: ActivateEmail) =
postFinished: postFinished:
navigateTo(makeUri("/activateEmail/success")) navigateTo(makeUri("/activateEmail/success"))

View file

@ -14,9 +14,7 @@ proc cmpNames*(cat1: Category, cat2: Category): int =
when defined(js): when defined(js):
include karax/prelude include karax/prelude
import karax / [vstyles, kajax, kdom] import karax / [vstyles]
import karaxutils
proc render*(category: Category): VNode = proc render*(category: Category): VNode =
result = buildHtml(): result = buildHtml():

View file

@ -1,11 +1,12 @@
when defined(js): when defined(js):
import sugar, httpcore, options, json, strutils, algorithm import sugar, httpcore, options, json, strutils, algorithm
import dom except Event import dom except Event
import jsffi except `&`
include karax/prelude include karax/prelude
import karax / [kajax, kdom, vstyles, vdom] import karax / [kajax, kdom, vdom]
import error, replybox, threadlist, post, category, user import error, category, user
import category, karaxutils import category, karaxutils
type type
@ -108,7 +109,7 @@ when defined(js):
let form = dom.document.getElementById("add-category-form") let form = dom.document.getElementById("add-category-form")
let formData = newFormData(form) let formData = newFormData(form)
ajaxPost(uri, @[], cast[cstring](formData), ajaxPost(uri, @[], formData.to(cstring),
(s: int, r: kstring) => onAddCategoryPost(s, r, state)) (s: int, r: kstring) => onAddCategoryPost(s, r, state))
proc onClose(ev: Event, n: VNode, state: CategoryPicker) = proc onClose(ev: Event, n: VNode, state: CategoryPicker) =

View file

@ -1,6 +1,7 @@
when defined(js): when defined(js):
import sugar, httpcore, options, json import sugar, httpcore, options, json
import dom except Event import dom except Event
import jsffi except `&`
include karax/prelude include karax/prelude
import karax / [kajax, kdom] import karax / [kajax, kdom]
@ -59,7 +60,7 @@ when defined(js):
formData.append("id", $state.post.id) formData.append("id", $state.post.id)
of DeleteThread: of DeleteThread:
formData.append("id", $state.thread.id) formData.append("id", $state.thread.id)
ajaxPost(uri, @[], cast[cstring](formData), ajaxPost(uri, @[], formData.to(cstring),
(s: int, r: kstring) => onDeletePost(s, r, state)) (s: int, r: kstring) => onDeletePost(s, r, state))
proc onClose(ev: Event, n: VNode, state: DeleteModal) = proc onClose(ev: Event, n: VNode, state: DeleteModal) =

View file

@ -1,5 +1,6 @@
when defined(js): when defined(js):
import httpcore, options, sugar, json import httpcore, options, sugar, json
import jsffi except `&`
include karax/prelude include karax/prelude
import karax/kajax import karax/kajax
@ -54,7 +55,7 @@ when defined(js):
formData.append("postId", $state.post.id) formData.append("postId", $state.post.id)
# TODO: Subject # TODO: Subject
let uri = makeUri("/updatePost") let uri = makeUri("/updatePost")
ajaxPost(uri, @[], cast[cstring](formData), ajaxPost(uri, @[], formData.to(cstring),
(s: int, r: kstring) => onEditPost(s, r, state)) (s: int, r: kstring) => onEditPost(s, r, state))
proc render*(state: EditBox, post: Post): VNode = proc render*(state: EditBox, post: Post): VNode =

View file

@ -7,7 +7,6 @@ type
when defined(js): when defined(js):
import json import json
include karax/prelude include karax/prelude
import karax / [vstyles, kajax, kdom]
import karaxutils import karaxutils

View file

@ -1,4 +1,4 @@
import strformat, times, options, json, tables, sugar, httpcore, uri import options, tables, sugar, httpcore
from dom import window, Location, document, decodeURI from dom import window, Location, document, decodeURI
include karax/prelude include karax/prelude

View file

@ -1,6 +1,6 @@
import options, times, httpcore, json, sugar import options, times, httpcore, json, sugar
import threadlist, user import user
type type
UserStatus* = object UserStatus* = object
user*: Option[User] user*: Option[User]
@ -63,7 +63,7 @@ when defined(js):
proc getStatus(logout: bool=false) = proc getStatus(logout: bool=false) =
if state.loading: return if state.loading: return
let diff = getTime() - state.lastUpdate let diff = getTime() - state.lastUpdate
if diff.minutes < 5: if diff.inMinutes < 5:
return return
state.loading = true state.loading = true

View file

@ -1,4 +1,4 @@
import strutils, options, strformat, parseutils, tables import strutils, strformat, parseutils, tables
proc parseIntSafe*(s: string, value: var int) {.noSideEffect.} = proc parseIntSafe*(s: string, value: var int) {.noSideEffect.} =
## parses `s` into an integer in the range `validRange`. If successful, ## parses `s` into an integer in the range `validRange`. If successful,

View file

@ -1,6 +1,7 @@
when defined(js): when defined(js):
import sugar, httpcore, options, json import sugar, httpcore, options, json
import dom except Event, KeyboardEvent import dom except Event, KeyboardEvent
import jsffi except `&`
include karax/prelude include karax/prelude
import karax / [kajax, kdom] import karax / [kajax, kdom]
@ -30,7 +31,7 @@ when defined(js):
let form = dom.document.getElementById("login-form") let form = dom.document.getElementById("login-form")
# TODO: This is a hack, karax should support this. # TODO: This is a hack, karax should support this.
let formData = newFormData(form) let formData = newFormData(form)
ajaxPost(uri, @[], cast[cstring](formData), ajaxPost(uri, @[], formData.to(cstring),
(s: int, r: kstring) => onLogInPost(s, r, state)) (s: int, r: kstring) => onLogInPost(s, r, state))
proc onClose(ev: Event, n: VNode, state: LoginModal) = proc onClose(ev: Event, n: VNode, state: LoginModal) =

View file

@ -6,7 +6,7 @@ when defined(js):
include karax/prelude include karax/prelude
import karax / [kajax, kdom] import karax / [kajax, kdom]
import error, replybox, threadlist, post, category, user import error, replybox, threadlist, post, user
import karaxutils, categorypicker import karaxutils, categorypicker
type type

View file

@ -1,4 +1,4 @@
import strformat, options import options
import user, threadlist import user, threadlist

View file

@ -7,6 +7,7 @@ import options, httpcore, json, sugar, sequtils, strutils
when defined(js): when defined(js):
include karax/prelude include karax/prelude
import karax/[kajax, kdom] import karax/[kajax, kdom]
import jsffi except `&`
import error, karaxutils, post, user, threadlist import error, karaxutils, post, user, threadlist
@ -116,7 +117,7 @@ when defined(js):
makeUri("/unlike") makeUri("/unlike")
else: else:
makeUri("/like") makeUri("/like")
ajaxPost(uri, @[], cast[cstring](formData), ajaxPost(uri, @[], formData.to(cstring),
(s: int, r: kstring) => (s: int, r: kstring) =>
onPost(s, r, state, post, currentUser.get())) onPost(s, r, state, post, currentUser.get()))
@ -172,7 +173,7 @@ when defined(js):
makeUri("/unlock") makeUri("/unlock")
else: else:
makeUri("/lock") makeUri("/lock")
ajaxPost(uri, @[], cast[cstring](formData), ajaxPost(uri, @[], formData.to(cstring),
(s: int, r: kstring) => (s: int, r: kstring) =>
onPost(s, r, state, thread)) onPost(s, r, state, thread))

View file

@ -1,6 +1,6 @@
import system except Thread import system except Thread
import options, json, times, httpcore, strformat, sugar, math, strutils import options, json, times, httpcore, sugar, strutils
import sequtils import sequtils
import threadlist, category, post, user import threadlist, category, post, user
@ -18,7 +18,7 @@ when defined(js):
import jsffi except `&` import jsffi except `&`
include karax/prelude include karax/prelude
import karax / [vstyles, kajax, kdom] import karax / [kajax, kdom]
import karaxutils, error, replybox, editbox, postbutton, delete import karaxutils, error, replybox, editbox, postbutton, delete
import categorypicker import categorypicker
@ -326,12 +326,12 @@ when defined(js):
] ]
var diffStr = tmpl[0] var diffStr = tmpl[0]
let diff = latestTime - prevPost.info.creation.fromUnix() let diff = latestTime - prevPost.info.creation.fromUnix()
if diff.weeks > 48: if diff.inWeeks > 48:
let years = diff.weeks div 48 let years = diff.inWeeks div 48
diffStr = diffStr =
(if years == 1: tmpl[1] else: tmpl[2]) % $years (if years == 1: tmpl[1] else: tmpl[2]) % $years
elif diff.weeks > 4: elif diff.inWeeks > 4:
let months = diff.weeks div 4 let months = diff.inWeeks div 4
diffStr = diffStr =
(if months == 1: tmpl[3] else: tmpl[4]) % $months (if months == 1: tmpl[3] else: tmpl[4]) % $months
else: else:

View file

@ -1,12 +1,12 @@
import options, httpcore, json, sugar, times, strformat, strutils import options, httpcore, json, sugar, times, strutils
import threadlist, post, category, error, user import threadlist, post, error, user
when defined(js): when defined(js):
from dom import document from dom import document
include karax/prelude include karax/prelude
import karax/[kajax, kdom] import karax/[kajax, kdom]
import karaxutils, postbutton, delete, profilesettings import karaxutils, profilesettings
type type
ProfileTab* = enum ProfileTab* = enum

View file

@ -1,10 +1,11 @@
when defined(js): when defined(js):
import httpcore, options, sugar, json, strutils, strformat import httpcore, options, sugar, json, strutils, strformat
import jsffi except `&`
include karax/prelude include karax/prelude
import karax/[kajax, kdom] import karax/[kajax, kdom]
import replybox, post, karaxutils, postbutton, error, delete, user import post, karaxutils, postbutton, error, delete, user
type type
ProfileSettings* = ref object ProfileSettings* = ref object
@ -68,7 +69,7 @@ when defined(js):
formData.append("rank", $state.rank) formData.append("rank", $state.rank)
formData.append("username", $state.profile.user.name) formData.append("username", $state.profile.user.name)
let uri = makeUri("/saveProfile") let uri = makeUri("/saveProfile")
ajaxPost(uri, @[], cast[cstring](formData), ajaxPost(uri, @[], formData.to(cstring),
(s: int, r: kstring) => onProfilePost(s, r, state)) (s: int, r: kstring) => onProfilePost(s, r, state))
proc needsSave(state: ProfileSettings): bool = proc needsSave(state: ProfileSettings): bool =

View file

@ -1,5 +1,6 @@
when defined(js): when defined(js):
import strformat, options, httpcore, json, sugar import strformat, options, httpcore, json, sugar
import jsffi except `&`
from dom import getElementById, scrollIntoView, setTimeout from dom import getElementById, scrollIntoView, setTimeout
@ -56,7 +57,7 @@ when defined(js):
let formData = newFormData() let formData = newFormData()
formData.append("msg", state.text) formData.append("msg", state.text)
let uri = makeUri("/preview") let uri = makeUri("/preview")
ajaxPost(uri, @[], cast[cstring](formData), ajaxPost(uri, @[], formData.to(cstring),
(s: int, r: kstring) => onPreviewPost(s, r, state)) (s: int, r: kstring) => onPreviewPost(s, r, state))
proc onMessageClick(e: Event, n: VNode, state: ReplyBox) = proc onMessageClick(e: Event, n: VNode, state: ReplyBox) =
@ -80,7 +81,7 @@ when defined(js):
if replyingTo.isSome: if replyingTo.isSome:
formData.append("replyingTo", $replyingTo.get().id) formData.append("replyingTo", $replyingTo.get().id)
let uri = makeUri("/createPost") let uri = makeUri("/createPost")
ajaxPost(uri, @[], cast[cstring](formData), ajaxPost(uri, @[], formData.to(cstring),
(s: int, r: kstring) => onReplyPost(s, r, state)) (s: int, r: kstring) => onReplyPost(s, r, state))
proc onCancelClick(e: Event, n: VNode, state: ReplyBox) = proc onCancelClick(e: Event, n: VNode, state: ReplyBox) =

View file

@ -1,11 +1,12 @@
when defined(js): when defined(js):
import sugar, httpcore, options, json import sugar, httpcore, options, json
import dom except Event, KeyboardEvent import dom except Event, KeyboardEvent
import jsffi except `&`
include karax/prelude include karax/prelude
import karax / [kajax, kdom] import karax / [kajax, kdom]
import error, replybox, threadlist, post import error
import karaxutils import karaxutils
type type
@ -86,7 +87,7 @@ when defined(js):
let form = dom.document.getElementById("resetpassword-form") let form = dom.document.getElementById("resetpassword-form")
# TODO: This is a hack, karax should support this. # TODO: This is a hack, karax should support this.
let formData = newFormData(form) let formData = newFormData(form)
ajaxPost(uri, @[], cast[cstring](formData), ajaxPost(uri, @[], formData.to(cstring),
(s: int, r: kstring) => onPost(s, r, state)) (s: int, r: kstring) => onPost(s, r, state))
ev.preventDefault() ev.preventDefault()

View file

@ -20,7 +20,7 @@ when defined(js):
from dom import nil from dom import nil
include karax/prelude include karax/prelude
import karax / [vstyles, kajax, kdom] import karax / [kajax]
import karaxutils, error, threadlist, sugar import karaxutils, error, threadlist, sugar

View file

@ -1,6 +1,7 @@
when defined(js): when defined(js):
import sugar, httpcore, options, json import sugar, httpcore, options, json
import dom except Event import dom except Event
import jsffi except `&`
include karax/prelude include karax/prelude
import karax / [kajax, kdom] import karax / [kajax, kdom]
@ -28,7 +29,7 @@ when defined(js):
let form = dom.document.getElementById("signup-form") let form = dom.document.getElementById("signup-form")
# TODO: This is a hack, karax should support this. # TODO: This is a hack, karax should support this.
let formData = newFormData(form) let formData = newFormData(form)
ajaxPost(uri, @[], cast[cstring](formData), ajaxPost(uri, @[], formData.to(cstring),
(s: int, r: kstring) => onSignUpPost(s, r, state)) (s: int, r: kstring) => onSignUpPost(s, r, state))
proc onClose(ev: Event, n: VNode, state: SignupModal) = proc onClose(ev: Event, n: VNode, state: SignupModal) =

View file

@ -1,4 +1,4 @@
import strformat, times, options, json, httpcore, sugar import strformat, times, options, json, httpcore
import category, user import category, user
@ -98,19 +98,19 @@ when defined(js):
let duration = currentTime - activityTime let duration = currentTime - activityTime
if currentTime.local().year != activityTime.local().year: if currentTime.local().year != activityTime.local().year:
return activityTime.local().format("MMM yyyy") return activityTime.local().format("MMM yyyy")
elif duration.days > 30 and duration.days < 300: elif duration.inDays > 30 and duration.inDays < 300:
return activityTime.local().format("MMM dd") return activityTime.local().format("MMM dd")
elif duration.days != 0: elif duration.inDays != 0:
return $duration.days & "d" return $duration.inDays & "d"
elif duration.hours != 0: elif duration.inHours != 0:
return $duration.hours & "h" return $duration.inHours & "h"
elif duration.minutes != 0: elif duration.inMinutes != 0:
return $duration.minutes & "m" return $duration.inMinutes & "m"
else: else:
return $duration.seconds & "s" return $duration.inSeconds & "s"
proc genThread(thread: Thread, isNew: bool, noBorder: bool): VNode = proc genThread(thread: Thread, isNew: bool, noBorder: bool): VNode =
let isOld = (getTime() - thread.creation.fromUnix).weeks > 2 let isOld = (getTime() - thread.creation.fromUnix).inWeeks > 2
let isBanned = thread.author.rank.isBanned() let isBanned = thread.author.rank.isBanned()
result = buildHtml(): result = buildHtml():
tr(class=class({"no-border": noBorder, "banned": isBanned})): tr(class=class({"no-border": noBorder, "banned": isBanned})):