Add Presences API announcement, docs, and changelog#3010
Conversation
Appwrite WebsiteProject ID: Website (appwrite/website)Project ID: Tip Git integration provides automatic deployments with optional PR comments |
Greptile SummaryThis PR adds the Appwrite Presences API across the full documentation surface: a blog post announcement, a changelog entry, a comprehensive reference guide under
Confidence Score: 4/5Safe to merge after confirming the The main content — events format, heartbeat pattern, subscribe examples — looks correct in the current state of the files. The one new finding (undefined
Important Files Changed
Reviews (23): Last reviewed commit: "Add 'Presences' link to the API referenc..." | Re-trigger Greptile |
|
@ArnabChatterjee20k I'm still working on some more updates, will ping on Discord once ready |
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
- Rust `list` code block did not compile: `Query::equal` returns a
`Query` but `list` expects `Vec<String>`, and `vec!["online".into()]`
was type-ambiguous. Use
`Query::equal("status", vec!["online".to_string()]).to_string()`.
- Add the Presence API announcement cover image, optimized to avif.
bd1f1a9 to
2060e68
Compare
Three errors in the upsert block surfaced by `cargo build`: - Wrong positional arg: the SDK signature is `upsert(presence_id, user_id, status, permissions, expires_at, metadata)` but the permissions vector was placed in slot 6 (metadata). - `Role::users()` requires `Option<&str>` — use `Role::users(None)`. - `Permission::read(...)` returns a `Permission`; the `permissions` parameter wants `Vec<String>`, so `.to_string()` is needed. Verified by running each Rust doc block against a local server: the fixed upsert creates a presence with `permissions: ["read(\"users\")"]` and the full get / list / update / delete lifecycle succeeds.
…ebsite into add-presence-api-docs
| "static/images/blog/announcing-new-push-notifications-features/cover.png": "a0c758cf6c8a95e09a0d2ca562b0775a50d34a4d691d675cda70e44ad21805ac", | ||
| "static/images/blog/announcing-opt-in-relationship-loading/cover.png": "e16cc16ea6d968b29af19bcd6274741141584a7efe5e1bb18be19b77c3a380c8", | ||
| "static/images/blog/announcing-phone-OTP-pricing/cover.png": "598d55359ca4cb2b46846a8fd76b1f051be7c5f3199b50ffa92a28e84e5f3d67", | ||
| "static/images/blog/announcing-presence-api/cover.png": "9c3600d4014e5eecb59ea2d2e0d84c4ac52bf38357ad465f44631c9421bf5734", |
There was a problem hiding this comment.
The new cache entry references
static/images/blog/announcing-presence-api/cover.png (singular "presence", .png extension), but the static asset committed in this PR lives at static/images/blog/announcing-presences-api/cover.avif — a different folder name and file extension. If the optimize pipeline tries to process the cached path, it will either error on a missing file or silently leave a dead entry. The entry should point to the actual file path.
| "static/images/blog/announcing-presence-api/cover.png": "9c3600d4014e5eecb59ea2d2e0d84c4ac52bf38357ad465f44631c9421bf5734", | |
| "static/images/blog/announcing-presences-api/cover.avif": "9c3600d4014e5eecb59ea2d2e0d84c4ac52bf38357ad465f44631c9421bf5734", |


What does this PR do?
(Provide a description of what this PR does.)
Test Plan
(Write your test plan here. If you changed any code, please provide us with clear instructions on how you verified your changes work.)
Related PRs and Issues
(If this PR is related to any other PR or resolves any issue or related to any issue link all related PR and issues here.)
Have you read the Contributing Guidelines on issues?
(Write your answer here.)