- Moved media related logic into notedeck instead of the ui crate,
since they pertain to Images/ImageCache based systems
- Made RenderableMedia owned to make it less of a nightmware
to work with and the perf should be negligible
- Added a ImageMetadata cache to Images. This is referenced
whenever we encounter an image so we don't have to
redo the work all of the time
- Relpaced our ad-hoc, hand(vibe?)-coded panning and zoom logic
with the Scene widget, which is explicitly designed for
this use case
- Extracted and detangle fullscreen media rendering from inside of note
rendering. We instead let the application decide what action they
want to perform when note media is clicked on.
- We add an on_view_media action to MediaAction for the application to
handle. The Columns app uses this toggle a FullscreenMedia app
option bits whenever we get a MediaAction::ViewMedis(urls).
Signed-off-by: William Casarin <jb55@jb55.com>
- Simplify Localization{Context,Manager} to just Localization
- Fixed a bunch of lifetime issueo
- Removed all Arcs and Locks
- Removed globals
* widgets now need access to &mut Localization for i18n
Signed-off-by: William Casarin <jb55@jb55.com>
kernelkind (9):
appease clippy
use `NwcError` instead of nwc::Error
make `UserAccount` cloneable
allow removal of Damoose account
expose `AccountCache::falback`
move select account logic to own method
bugfix: properly sub to new selected acc after removal of selected
bugfix: unsubscribe from timelines on deck deletion
bugfix: unsubscribe all decks when log out account
```
error: large size difference between variants
--> crates/notedeck_columns/src/column.rs:249:1
|
249 | / pub enum IntermediaryRoute {
250 | | Timeline(Timeline),
| | ------------------ the largest variant contains at least 280 bytes
251 | | Route(Route),
| | ------------ the second-largest variant contains at least 72 bytes
252 | | }
| |_^ the entire enum is at least 280 bytes
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant
= note: `-D clippy::large-enum-variant` implied by `-D warnings`
= help: to override `-D warnings` add `#[allow(clippy::large_enum_variant)]`
help: consider boxing the large fields to reduce the total size of the enum
|
250 - Timeline(Timeline),
250 + Timeline(Box<Timeline>),
|
error: could not compile `notedeck_columns` (lib) due to 1 previous error
```
Signed-off-by: kernelkind <kernelkind@gmail.com>
`ndb::poll_for_notes` appears to give notes as they arrive. We
need to make sure we only use the most recent for contacts
Signed-off-by: kernelkind <kernelkind@gmail.com>
```
error: large size difference between variants
--> crates/notedeck_columns/src/column.rs:249:1
|
249 | / pub enum IntermediaryRoute {
250 | | Timeline(Timeline),
| | ------------------ the largest variant contains at least 280 bytes
251 | | Route(Route),
| | ------------ the second-largest variant contains at least 72 bytes
252 | | }
| |_^ the entire enum is at least 280 bytes
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant
= note: `-D clippy::large-enum-variant` implied by `-D warnings`
= help: to override `-D warnings` add `#[allow(clippy::large_enum_variant)]`
help: consider boxing the large fields to reduce the total size of the enum
|
250 - Timeline(Timeline),
250 + Timeline(Box<Timeline>),
|
error: could not compile `notedeck_columns` (lib) due to 1 previous error
```
Signed-off-by: kernelkind <kernelkind@gmail.com>
This introduces a new filter construct called HybridFilter. This allows
filters to have different remote filter than local ones. For example,
adding kind0 to the remote for keeping profiles up to date on your
timeline, but only subscribing to kind1 locally.
Only home/contact filters use this feature for now.
Fixes: https://github.com/damus-io/notedeck/issues/995
Signed-off-by: William Casarin <jb55@jb55.com>