add docs part 1
This commit is contained in:
@@ -0,0 +1,252 @@
|
||||
# Partners
|
||||
|
||||
This document describes the partner sharing functionality.
|
||||
|
||||
## Partner Overview
|
||||
|
||||
Partners allow two-way photo sharing between users:
|
||||
- Share your library with another user
|
||||
- View photos from users who share with you
|
||||
- Optionally include partner photos in your timeline
|
||||
|
||||
## Partner Types
|
||||
|
||||
### Shared With (Inbound)
|
||||
Users who share their photos with you.
|
||||
- You can view their photos
|
||||
- Cannot modify their photos
|
||||
- Can include in your timeline
|
||||
|
||||
### Shared By (Outbound)
|
||||
Users you share your photos with.
|
||||
- They can view your photos
|
||||
- Cannot modify your photos
|
||||
- You control the sharing
|
||||
|
||||
## Partner API
|
||||
|
||||
### Get Partners Sharing With You
|
||||
```
|
||||
GET /partners?direction=shared-with
|
||||
|
||||
Response:
|
||||
[
|
||||
{
|
||||
"id": "user-uuid",
|
||||
"email": "partner@example.com",
|
||||
"name": "Jane Doe",
|
||||
"profileImagePath": "/path/to/image",
|
||||
"inTimeline": true
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
### Get Partners You Share With
|
||||
```
|
||||
GET /partners?direction=shared-by
|
||||
|
||||
Response:
|
||||
[
|
||||
{
|
||||
"id": "user-uuid",
|
||||
"email": "friend@example.com",
|
||||
"name": "John Smith",
|
||||
"profileImagePath": "/path/to/image",
|
||||
"inTimeline": false
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
### Add Partner (Share Your Library)
|
||||
```
|
||||
POST /partners/{userId}
|
||||
|
||||
Response: Partner user object
|
||||
```
|
||||
|
||||
### Remove Partner
|
||||
```
|
||||
DELETE /partners/{userId}
|
||||
```
|
||||
|
||||
### Update Partner Settings
|
||||
```
|
||||
PUT /partners/{userId}
|
||||
|
||||
Body:
|
||||
{
|
||||
"inTimeline": true
|
||||
}
|
||||
```
|
||||
|
||||
## Partner Screen
|
||||
|
||||
### Layout
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ ← Partners │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ Sharing with you │
|
||||
│ ┌─────────────────────────────────────────────────────┐ │
|
||||
│ │ 👤 Jane Doe │ │
|
||||
│ │ partner@example.com │ │
|
||||
│ │ Include in timeline: [Toggle: ON] [>] │ │
|
||||
│ └─────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────────────────────────────────────────┐ │
|
||||
│ │ 👤 Bob Wilson │ │
|
||||
│ │ bob@example.com │ │
|
||||
│ │ Include in timeline: [Toggle: OFF] [>] │ │
|
||||
│ └─────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ You're sharing with │
|
||||
│ ┌─────────────────────────────────────────────────────┐ │
|
||||
│ │ 👤 John Smith │ │
|
||||
│ │ friend@example.com [Remove] │ │
|
||||
│ └─────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ [+ Add Partner] │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## Adding a Partner
|
||||
|
||||
### User Selection Screen
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ ← Select Partner │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ [Search users...] │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ Available Users │
|
||||
│ ┌─────────────────────────────────────────────────────┐ │
|
||||
│ │ 👤 Alice Johnson │ │
|
||||
│ │ alice@example.com │ │
|
||||
│ └─────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────────────────────────────────────────┐ │
|
||||
│ │ 👤 Charlie Brown │ │
|
||||
│ │ charlie@example.com │ │
|
||||
│ └─────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### Available Users API
|
||||
```
|
||||
GET /users
|
||||
|
||||
Returns users on the same server who can be added as partners
|
||||
```
|
||||
|
||||
## Partner Detail View
|
||||
|
||||
View a partner's photos:
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ ← Jane Doe's Photos │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ December 2024 │
|
||||
│ ┌─────┬─────┬─────┬─────┐ │
|
||||
│ │ │ │ │ │ │
|
||||
│ │ 📷 │ 📷 │ 🎥 │ 📷 │ │
|
||||
│ │ │ │ │ │ │
|
||||
│ ├─────┼─────┼─────┼─────┤ │
|
||||
│ │ │ │ │ │ │
|
||||
│ │ 📷 │ 📷 │ 📷 │ 🎥 │ │
|
||||
│ │ │ │ │ │ │
|
||||
│ └─────┴─────┴─────┴─────┘ │
|
||||
│ ... │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### Getting Partner's Assets
|
||||
Partner assets are fetched during normal sync and filtered by user ID.
|
||||
|
||||
## Timeline Integration
|
||||
|
||||
### Include in Timeline
|
||||
When `inTimeline: true`:
|
||||
- Partner's photos appear in your main timeline
|
||||
- Mixed chronologically with your photos
|
||||
- Small avatar indicator shows owner
|
||||
|
||||
### Multi-User Timeline
|
||||
```
|
||||
Timeline Provider:
|
||||
- If single user: Show only your assets
|
||||
- If multiple users (partners with inTimeline):
|
||||
- Fetch assets for all users
|
||||
- Merge and sort chronologically
|
||||
- Add user indicator to each asset
|
||||
```
|
||||
|
||||
### Asset Owner Indicator
|
||||
```
|
||||
┌─────┐
|
||||
│ 📷 │
|
||||
│ 👤 │ ← Small avatar showing partner
|
||||
└─────┘
|
||||
```
|
||||
|
||||
## Partner Sync
|
||||
|
||||
### How Partner Assets Sync
|
||||
1. Fetch partner list on login
|
||||
2. For each partner with `inTimeline: true`:
|
||||
- Fetch their assets via sync API
|
||||
- Store in local database with owner ID
|
||||
3. Timeline queries include partner assets
|
||||
|
||||
### Sync Endpoint
|
||||
```
|
||||
GET /sync/full-sync?userId={partnerId}
|
||||
|
||||
Or included in normal sync with partner IDs
|
||||
```
|
||||
|
||||
## Privacy Considerations
|
||||
|
||||
### What Partners Can See
|
||||
- Your uploaded photos and videos
|
||||
- Metadata (location, date, etc.)
|
||||
- Albums you've shared
|
||||
|
||||
### What Partners Cannot Do
|
||||
- Delete your photos
|
||||
- Edit your photos
|
||||
- See your favorites/archive
|
||||
- Access your locked folder
|
||||
|
||||
## Removing a Partner
|
||||
|
||||
### Stop Sharing Your Library
|
||||
1. Go to Partners screen
|
||||
2. Find user in "You're sharing with"
|
||||
3. Tap Remove
|
||||
4. Confirm removal
|
||||
|
||||
### Behavior After Removal
|
||||
- Partner can no longer see your photos
|
||||
- Their local cache may still have thumbnails
|
||||
- No data is deleted from your server
|
||||
|
||||
## Partner vs Album Sharing
|
||||
|
||||
| Feature | Partner Sharing | Album Sharing |
|
||||
|---------|-----------------|---------------|
|
||||
| Scope | Entire library | Specific album |
|
||||
| New photos | Automatically included | Must add manually |
|
||||
| Timeline integration | Optional | No |
|
||||
| Bidirectional | Yes (if both share) | No |
|
||||
| Granular control | No | Yes (roles) |
|
||||
|
||||
---
|
||||
|
||||
[Previous: Sharing](./sharing.md) | [Next: Activities](./activities.md)
|
||||
Reference in New Issue
Block a user