Commit graph

121 commits

Author SHA1 Message Date
Vincent Ambo
a324a89fd0 chore(schema): Update generated Diesel schema
Updates the generated schema with the new users table.

This commit will break the build.
2018-05-02 00:33:46 +02:00
Vincent Ambo
1d9ff8b4c8 fix(migrations): Explicitly insert anonymous user
This guarantees that the anonymous user will always exist and have
ID=1.
2018-05-02 00:33:46 +02:00
Vincent Ambo
02c15f06d6 fix(migrations): Fix search index creation in user migration 2018-05-02 00:33:46 +02:00
Vincent Ambo
2159c76ca7 feat(migrations): Adds a migration to create a users table
As a first step of getting the concept of users into the database,
this creates a (somewhat involved) migration that moves all existing
"users" into a new users table and updates the post table to reference
it.

This migration is not yet finalised and still needs to be updated with
something to handle the concept of anonymous users (which I want to
keep around).
2018-05-02 00:33:46 +02:00
Vincent Ambo
0d23a04daf chore(gitattributes): Tell Github Linguist to ignore default.nix
The `default.nix` in this repository contains generated code and skews
Github's language statistics. While I'm a big fan of Nix, Converse is
certainly not 80% written in Nix ;-)
2018-04-24 16:04:12 +02:00
Vincent Ambo
9adacf8696 fix(build): Add explicit pulldown-cmark dependency
There is some weird dependency interaction between pulldown-cmark and
getopts which causes builds to fail with a message about unstable
features if getopts is not explicitly depended on as a dependency of a
dependency (yeah, huh?)
2018-04-23 22:09:37 +02:00
Vincent Ambo
0f6f5aeb4c refactor(build): Use Carnix-based expression for building
This is probably going to break Github's language statistics ...
2018-04-23 22:09:37 +02:00
Vincent Ambo
9dc1143b14 chore(cargo): Bump dependency minor versions 2018-04-23 22:09:37 +02:00
Vincent Ambo
93d6c7bbd1 chore(license): Relicense under AGPL-3.0-or-later
Relicense the project from the standard GPL3 to the Affero version of
the license, requiring source code disclosure for modifications made
on instances of Converse that are serving users over the network.
2018-04-17 14:47:36 +02:00
Vincent Ambo
1427220f9d style(thread): Fix padding on thread view
Removing this padding lets the author column render evenly sized.
2018-04-16 20:17:15 +02:00
Vincent Ambo
37331d9107 fix(thread): Load Gravatar images at larger size
This makes them look nicer in 2x situations (e.g. retina displays) and
when a user zooms in.
2018-04-16 16:48:42 +02:00
TatriX
ee855d8b67 feat(templates): Add 'Last post by' to the list of threads 2018-04-16 16:26:24 +02:00
Vincent Ambo
09a97d46ea docs(envrc): Add .envrc example file 2018-04-16 14:24:42 +02:00
Vincent Ambo
8d32200999 style(db): Fix whitespace error 2018-04-16 14:17:02 +02:00
Vincent Ambo
c5cf911a07 fix(db): Explicitly order posts in a thread 2018-04-16 14:14:26 +02:00
Vincent Ambo
9bc5bbff54 fix(templates): Fix alignment of columns in thread view
The author column is maybe slightly too large now, but that can be
sorted out later.
2018-04-16 13:33:47 +02:00
Vincent Ambo
9c2359c8c9 fix(templates): Fix double-escaping of thread titles 2018-04-16 11:03:15 +02:00
Vincent Ambo
1462810963 fix(render): Enable GFM's tagfilter extension 2018-04-16 03:15:50 +02:00
Vincent Ambo
a5f2677785 fix(templates): Add some pleasing spacing to thread layout 2018-04-16 02:56:55 +02:00
Vincent Ambo
1b662c8674 chore(oidc): Enable debug log statement for token responses 2018-04-16 02:16:34 +02:00
Vincent Ambo
985ca0a3e5 fix(build): Add PostgreSQL library to Nix dependencies 2018-04-16 01:06:20 +02:00
Vincent Ambo
72f6fa65fd fix(templates): Mark pre-escaped variables as 'safe' 2018-04-16 00:25:29 +02:00
Vincent Ambo
fc0b9d7fa5 refactor(main): Include Tera templates into application binary
Instead of loading the templates at launch time (which requires the
template folder to be present), include the template strings into the
binary.

This also re-enables auto-escaping in Tera.
2018-04-16 00:24:55 +02:00
Vincent Ambo
71c55b8bb8 feat(build): Add Nix build configuration
Adds a Nix build configuration baesd on the default rustPlatform
configuration.

The configuration pins a specific nixpkgs commit (which at the time
was a commit tracking nixpkgs-unstable).
2018-04-16 00:24:13 +02:00
Vincent Ambo
6fd7ee05f2 docs(todo): Update todo-list 2018-04-15 23:31:36 +02:00
Vincent Ambo
56d57edfd0 feat(handlers): Implement post editing handler
Implements a handler that receives the edit form result and updates
the database accordingly if the user identity matches.
2018-04-15 23:30:22 +02:00
Vincent Ambo
e130e15b79 feat(db): Support UpdatePost message
Simple message intended to be used for post editing.
2018-04-15 23:23:13 +02:00
Vincent Ambo
705097dab9 feat(handlers/render): Display edit form for user's own posts
Displays an edit form for posts that are owned by a user (which is
currently defined as "email addresses match").
2018-04-15 23:09:44 +02:00
Vincent Ambo
7a55786552 fix(templates/post): Correctly insert post body 2018-04-15 23:09:33 +02:00
Vincent Ambo
f4ca632c00 feat(db): Support GetPost message
Very simple message that retrieves a post from the DB.
2018-04-15 23:09:00 +02:00
Vincent Ambo
ce18cfa2d6 refactor: Add a message!-macro to reduce message boilerplate 2018-04-15 21:31:14 +02:00
Vincent Ambo
d9d1a3313f refactor(render): Pass serializable structs to Tera directly
No need to go the intermediate step via `Context::new()`
2018-04-15 21:18:27 +02:00
Vincent Ambo
ec712cc4c0 refactor(templates/render): Add generic post editing template
Adds a generic template that can be used for submitting, responding to
and editing posts.
2018-04-15 21:13:20 +02:00
Vincent Ambo
4c0e6552e8 refactor(main): Split enormous main() into smaller methods
A little bit of logical grouping of things has never hurt anyone.
2018-04-15 13:16:49 +02:00
Vincent Ambo
aeaa497a62 fix(handlers): Trim leading/trailing whitespace from new threads 2018-04-15 13:01:06 +02:00
Vincent Ambo
ee4b690d22 refactor(templates): Restyle thread view using flex layout 2018-04-15 12:38:33 +02:00
Vincent Ambo
9cee48f2da feat(handlers): Determine whether current user can edit a post 2018-04-15 12:38:12 +02:00
Vincent Ambo
02a466a28b style(templates): Minor fixes to search & index layouts 2018-04-15 00:41:17 +02:00
Vincent Ambo
ba33efd772 refactor(handlers): Receive search terms via query parameters
There are several reasons for this, but one important one is that
people expect to be able to share search links.
2018-04-14 23:28:34 +02:00
Vincent Ambo
e0b1bc2627 fix(render): Escape post bodies
... derp.

Well, the CSP prevented script executions already.
2018-04-14 22:33:35 +02:00
Vincent Ambo
8057b8849e feat(templates): Add 'sticky' badge to sticky threads 2018-04-14 22:33:35 +02:00
Vincent Ambo
06f7f23bab fix(migrations): Change weighting of title vs. body
After thinking for a little while I actually think the body of a post
may be more relevant when searching for posts than the thread title.

Right now this is just a hunch and we'll have to find out how it
actually ends up working in real life.
2018-04-14 22:21:55 +02:00
Vincent Ambo
4132869277 feat: Implement search result view & enable search
Implements a very simple and currently kinda broken-looking search
result view.
2018-04-14 22:21:55 +02:00
Vincent Ambo
dae97fdaf5 chore(db): Arbitrarily limit search result size
... until pagination is in place.
2018-04-14 22:21:55 +02:00
Vincent Ambo
39d1cd64bc feat(main/db): Schedule regular search view refresh
Schedules refreshes of the database view used for search at one-minute
intervals.
2018-04-14 22:21:55 +02:00
Vincent Ambo
3e5b1098c6 refactor(schema): Unify integer type usage across tables 2018-04-14 22:21:55 +02:00
Vincent Ambo
ea68bac427 refactor(handlers): Improve error handling in post creation 2018-04-14 22:21:55 +02:00
Vincent Ambo
31b0a550f2 feat(db): Implement handling of 'SearchPosts' message
Adds support for executing full-text search across a forum instance by
sending the `SearchPosts` message with a search query to the DB actor.

The struct used for results is mapped manually to the expected query
result as the query is embedded via raw SQL.
2018-04-14 22:21:55 +02:00
Vincent Ambo
2d8db52010 feat(migrations): Add materialized view & index for full text search
Adds a materialized view to be used for full-text searches that
indexes the tsvector documents for each post.
2018-04-14 22:21:55 +02:00
Vincent Ambo
529da884da fix(templates): Fluidly scale all images 2018-04-14 18:12:24 +02:00