mirror of
https://github.com/linsa-io/linsa.git
synced 2026-01-12 12:20:23 +01:00
* feat: keyboard nav * fix: link update * feat: reusable learning state * chore: use new learning state * feat: add to my profile * . * . * feat: on enter open the link * fix: lint * fix: use eslint v8 instead of v9 * fix: add to my profile * chore: update personal link schema * chore: update personal page schema * fix: update detail wrapper * fix: update page section * removing option for learning status * removing option for learning status for topic * feat: add createdAt and updatedAt for personal Page * chore: update page section component * chore: remove chevron from sub menu * fix: sidebar * chore: add focus and disable toast * feat: la editor add execption for no command class * fix: la editor style and fix page detail * fix: title * fix: topic learning state * chore: add showSearch for learning state * fix: bunch stuff * chore: link list and item handle learning state * chore: set expand to false * feat: personal link for topic detail * chore: hook use topic data * chore: go to list * fix: link and topic * feat(utils): new keyboard utils * feat(store): add linkOpenPopoverForIdAtom for link * chore: using memo for use topic data * fix: remove duplicate component * chore: performance for topic detail lint item * refactor: remove LinkOptions component * chore: improve performance for list * feat: added LinkRoute copmonent * chore: link manage * feat: bottom bar * fix: link * fix: page wrapper * fix: import thing * chore: added a displayname * refactor: page detail * refactor: page detail * fix: add topic to personal link form link * fix: only show page count if more than zero * fix: sidebar topic section --------- Co-authored-by: Nikita <github@nikiv.dev> Co-authored-by: marshennikovaolga <marshennikova@gmail.com>
22 lines
978 B
TypeScript
22 lines
978 B
TypeScript
import { co, CoList, CoMap, Encoders } from "jazz-tools"
|
|
import { Topic } from "./master/topic"
|
|
|
|
/*
|
|
* Page, content that user can write to. Similar to Notion/Reflect page. It holds ProseMirror editor content + metadata.
|
|
* - slug: make it unique
|
|
* - Public Access, url should be learn-anything.xyz/@user/slug
|
|
* - if public, certain members (can do read/write access accordingly), personal (end to end encrypted, only accessed by user)
|
|
*/
|
|
export class PersonalPage extends CoMap {
|
|
title = co.optional.string
|
|
slug = co.optional.string // is used only when `public: true` for sharing, `@user/page-slug`
|
|
public = co.boolean
|
|
content = co.optional.json()
|
|
topic = co.optional.ref(Topic)
|
|
createdAt = co.encoded(Encoders.Date)
|
|
updatedAt = co.encoded(Encoders.Date)
|
|
// backlinks = co.optional.ref() // other PersonalPages linking to this page TODO: add, think through how to do it well, efficiently
|
|
}
|
|
|
|
export class PersonalPageLists extends CoList.Of(co.ref(PersonalPage)) {}
|