This repository has been archived on 2022-08-19. You can view files and clone it, but cannot push or open issues or pull requests.
hydrogen-web/src/domain/session/room/timeline/tiles/SimpleTile.js

77 lines
1.7 KiB
JavaScript
Raw Normal View History

import UpdateAction from "../UpdateAction.js";
2019-03-09 00:34:56 +05:30
export default class SimpleTile {
2019-03-09 05:10:03 +05:30
constructor({entry, emitUpdate}) {
2019-03-09 00:34:56 +05:30
this._entry = entry;
2019-03-09 05:10:03 +05:30
this._emitUpdate = emitUpdate;
2019-03-09 00:34:56 +05:30
}
// view model props for all subclasses
// hmmm, could also do instanceof ... ?
get shape() {
return null;
2019-03-09 00:34:56 +05:30
// "gap" | "message" | "image" | ... ?
}
// don't show display name / avatar
// probably only for MessageTiles of some sort?
get isContinuation() {
return false;
}
get hasDateSeparator() {
return false;
}
// TilesCollection contract? unused atm
get upperEntry() {
return this._entry;
2019-03-09 00:34:56 +05:30
}
// TilesCollection contract? unused atm
get lowerEntry() {
return this._entry;
2019-03-09 00:34:56 +05:30
}
emitUpdate(paramName) {
this._emitUpdate(this, paramName);
}
2019-03-09 00:34:56 +05:30
// TilesCollection contract
compareEntry(entry) {
return this._entry.compare(entry);
2019-03-09 00:34:56 +05:30
}
// update received for already included (falls within sort keys) entry
updateEntry(entry) {
this._entry = entry;
return UpdateAction.Nothing();
2019-03-09 05:10:03 +05:30
}
2019-03-09 00:34:56 +05:30
2019-03-09 05:10:03 +05:30
// return whether the tile should be removed
// as SimpleTile only has one entry, the tile should be removed
removeEntry(entry) {
return true;
2019-03-09 00:34:56 +05:30
}
2019-03-09 05:10:03 +05:30
// SimpleTile can only contain 1 entry
2019-03-09 00:34:56 +05:30
tryIncludeEntry() {
return false;
}
// let item know it has a new sibling
updatePreviousSibling(prev) {
}
// let item know it has a new sibling
updateNextSibling(next) {
}
get internalId() {
return this._entry.asEventKey().toString();
}
get isPending() {
return this._entry.isPending;
}
2019-03-09 00:34:56 +05:30
}