forked from gnolang/gno
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(blog): add sorting, better rendering (gnolang#1541)
## Description This PR adds two new AVL trees that enable sorting of the blog posts by publication date and title. This approach utilizes the fact that the AVL tree iteration order is lexicographic by key. We introduce two new AVL trees into the `Blog` struct - which store a key to sort by (title or publication date), and store the pointers to posts, meaning the memory overhead is small. This PR also modifies the rendering of the blog: Old blog home page: ![Screenshot 2024-01-23 at 11 34 10](https://github.com/gnolang/gno/assets/33522493/78e197d3-a477-49a9-88d8-06b4f2c3d51d) New blog home page (sorted newest-top-left): ![Screenshot 2024-01-23 at 11 33 38](https://github.com/gnolang/gno/assets/33522493/16712e37-c971-4cf5-9962-9dbf639a6088) Old post rendering - header & footer: ![Screenshot 2024-01-23 at 11 34 46](https://github.com/gnolang/gno/assets/33522493/d6a713bb-379c-44b7-9ea7-38997e6b5c5a) New post rendering - header & footer: ![Screenshot 2024-01-23 at 11 35 03](https://github.com/gnolang/gno/assets/33522493/352ea40d-c9ac-41a0-a362-fb3c5ca62968) ---- ![Screenshot 2024-01-23 at 11 35 11](https://github.com/gnolang/gno/assets/33522493/6f21416c-8945-4eca-9bee-b67a9e56a568) The API changes are the following: - Each post now stores the publisher (ie caller of ModAddPost), and the authors. - It is envisioned that the author list will be a list of GitHub usernames, while the publisher is simply the address of the caller. A PR in the Blog repo will be added to accommodate this change. - If the author list in the frontmatter of the blog post is empty, just the publisher will be displayed - The timestamp for when the blog was written will primarily be taken in from the outside world, ie from the frontmatter, in the `RFC3339` format. This timestamp allows us to still keep the ordering of the blogs even when the block height/timestamp is unreliable. In case the timestamps are not provided, time.Now() in the realm will be used instead. Publishing flow - two options: - Pass in data directly to the blog realm via `ModAddPost`, - Use the `gnoblog-cli` or similar parsing & publishing tool. Either way, it is expected that any timestamps passed will be used in the `time.RFC3339` format. This PR is being published in pair with a [refactor](gnolang/blog#63) of the gnoblog-cli tool. Related: gnolang/blog#20 <details><summary>Contributors' checklist...</summary> - [ ] Added new tests, or not needed, or not feasible - [ ] Provided an example (e.g. screenshot) to aid review or the PR is self-explanatory - [ ] Updated the official documentation or not needed - [ ] No breaking changes were made, or a `BREAKING CHANGE: xxx` message was included in the description - [ ] Added references to related issues and PRs - [ ] Provided any useful hints for running manual tests - [ ] Added new benchmarks to [generated graphs](https://gnoland.github.io/benchmarks), if any. More info [here](https://github.com/gnolang/gno/blob/master/.benchmarks/README.md). </details> --------- Co-authored-by: Manfred Touron <94029+moul@users.noreply.github.com>
- Loading branch information
Showing
19 changed files
with
253 additions
and
157 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.