No need for event-emitter here

This commit is contained in:
RMidhunSuresh 2023-06-09 16:44:42 +05:30
parent 9a2a482096
commit f36c996a86
2 changed files with 9 additions and 5 deletions

View File

@ -13,9 +13,9 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import {EventEmitter} from "../../../utils/EventEmitter";
import {createEnum} from "../../../utils/enum"; import {createEnum} from "../../../utils/enum";
import {AbortError} from "../../../utils/error"; import {AbortError} from "../../../utils/error";
import {Deferred} from "../../../utils/Deferred";
import {REDACTION_TYPE} from "../common"; import {REDACTION_TYPE} from "../common";
import {getRelationFromContent, getRelationTarget, setRelationTarget} from "../timeline/relations.js"; import {getRelationFromContent, getRelationTarget, setRelationTarget} from "../timeline/relations.js";
@ -31,9 +31,8 @@ export const SendStatus = createEnum(
const unencryptedContentFields = [ "m.relates_to" ]; const unencryptedContentFields = [ "m.relates_to" ];
export class PendingEvent extends EventEmitter { export class PendingEvent {
constructor({data, remove, emitUpdate, attachments}) { constructor({data, remove, emitUpdate, attachments}) {
super();
this._data = data; this._data = data;
this._attachments = attachments; this._attachments = attachments;
this._emitUpdate = emitUpdate; this._emitUpdate = emitUpdate;
@ -42,6 +41,7 @@ export class PendingEvent extends EventEmitter {
this._status = SendStatus.Waiting; this._status = SendStatus.Waiting;
this._sendRequest = null; this._sendRequest = null;
this._attachmentsTotalBytes = 0; this._attachmentsTotalBytes = 0;
this._deferred = new Deferred()
if (this._attachments) { if (this._attachments) {
this._attachmentsTotalBytes = Object.values(this._attachments).reduce((t, a) => t + a.size, 0); this._attachmentsTotalBytes = Object.values(this._attachments).reduce((t, a) => t + a.size, 0);
} }
@ -230,12 +230,16 @@ export class PendingEvent extends EventEmitter {
this._sendRequest = null; this._sendRequest = null;
// both /send and /redact have the same response format // both /send and /redact have the same response format
this._data.remoteId = response.event_id; this._data.remoteId = response.event_id;
this.emit("remote-id", this.remoteId); this._deferred.resolve(response.event_id);
log.set("id", this._data.remoteId); log.set("id", this._data.remoteId);
this._status = SendStatus.Sent; this._status = SendStatus.Sent;
this._emitUpdate("status"); this._emitUpdate("status");
} }
getRemoteId() {
return this._deferred.promise;
}
dispose() { dispose() {
if (this._attachments) { if (this._attachments) {
for (const attachment of Object.values(this._attachments)) { for (const attachment of Object.values(this._attachments)) {

View File

@ -126,7 +126,7 @@ export class RoomChannel extends Disposables implements IChannel {
to: this.otherUserId, to: this.otherUserId,
}); });
const pendingEvent = await this.room.sendEvent("m.room.message", content, undefined, log); const pendingEvent = await this.room.sendEvent("m.room.message", content, undefined, log);
this.track(pendingEvent.disposableOn("remote-id", (id: string) => { this.id = id; })); this.id = await pendingEvent.getRemoteId();
this.sentMessages.set(eventType, {content}); this.sentMessages.set(eventType, {content});
}); });
} }