forked from mystiq/hydrogen-web
35 lines
1.0 KiB
JavaScript
35 lines
1.0 KiB
JavaScript
//entries can be sorted, first by fragment, then by entry index.
|
|
import EventKey from "../EventKey.js";
|
|
export const PENDING_FRAGMENT_ID = Number.MAX_SAFE_INTEGER;
|
|
|
|
export default class BaseEntry {
|
|
constructor(fragmentIdComparer) {
|
|
this._fragmentIdComparer = fragmentIdComparer;
|
|
}
|
|
|
|
get fragmentId() {
|
|
throw new Error("unimplemented");
|
|
}
|
|
|
|
get entryIndex() {
|
|
throw new Error("unimplemented");
|
|
}
|
|
|
|
compare(otherEntry) {
|
|
if (this.fragmentId === otherEntry.fragmentId) {
|
|
return this.entryIndex - otherEntry.entryIndex;
|
|
} else if (this.fragmentId === PENDING_FRAGMENT_ID) {
|
|
return 1;
|
|
} else if (otherEntry.fragmentId === PENDING_FRAGMENT_ID) {
|
|
return -1;
|
|
} else {
|
|
// This might throw if the relation of two fragments is unknown.
|
|
return this._fragmentIdComparer.compare(this.fragmentId, otherEntry.fragmentId);
|
|
}
|
|
}
|
|
|
|
asEventKey() {
|
|
return new EventKey(this.fragmentId, this.entryIndex);
|
|
}
|
|
}
|