Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit e8d59b23 authored by Simon Chan's avatar Simon Chan
Browse files

feat(scrcpy): set clipboard stream to undefined when it's disabled by options

parent dc6dacc8
Loading
Loading
Loading
Loading
+11 −8
Original line number Diff line number Diff line
@@ -120,18 +120,21 @@ export class ScrcpyOptions1_16 extends ScrcpyOptions<ScrcpyOptionsInit1_16> {
        return SCRCPY_CONTROL_MESSAGE_TYPES_1_16;
    }

    #clipboardController!: PushReadableStreamController<string>;
    #clipboard: ReadableStream<string>;
    #clipboardController: PushReadableStreamController<string> | undefined;
    #clipboard: ReadableStream<string> | undefined;
    override get clipboard() {
        return this.#clipboard;
    }

    constructor(init: ScrcpyOptionsInit1_16) {
        super(ScrcpyOptions0_00, init, ScrcpyOptions1_16.DEFAULTS);

        if (this.value.control) {
            this.#clipboard = new PushReadableStream<string>((controller) => {
                this.#clipboardController = controller;
            });
        }
    }

    serialize(): string[] {
        return ScrcpyOptions1_16.serialize(
@@ -181,7 +184,7 @@ export class ScrcpyOptions1_16 extends ScrcpyOptions<ScrcpyOptionsInit1_16> {

    async #parseClipboardMessage(stream: AsyncExactReadable) {
        const message = await ScrcpyClipboardDeviceMessage.deserialize(stream);
        await this.#clipboardController.enqueue(message.content);
        await this.#clipboardController?.enqueue(message.content);
    }

    override async parseDeviceMessage(
@@ -200,9 +203,9 @@ export class ScrcpyOptions1_16 extends ScrcpyOptions<ScrcpyOptionsInit1_16> {

    override endDeviceMessageStream(e?: unknown): void {
        if (e) {
            this.#clipboardController.error(e);
            this.#clipboardController?.error(e);
        } else {
            this.#clipboardController.close();
            this.#clipboardController?.close();
        }
    }

+9 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ import { Struct, string, u32, u64, u8 } from "@yume-chan/struct";

import type { ScrcpySetClipboardControlMessage } from "../control/index.js";

import type { ReadableStream } from "@yume-chan/stream-extra";
import type { ScrcpyOptionsInit1_18 } from "./1_18.js";
import { ScrcpyOptions1_18 } from "./1_18.js";
import { ScrcpyOptions, toScrcpyOptionValue } from "./types.js";
@@ -74,6 +75,14 @@ export class ScrcpyOptions1_21 extends ScrcpyOptions<ScrcpyOptionsInit1_21> {

    #clipboardAck = new Map<bigint, PromiseResolver<void>>();

    override get clipboard(): ReadableStream<string> | undefined {
        if (this.value.clipboardAutosync) {
            return super.clipboard;
        } else {
            return undefined;
        }
    }

    constructor(init: ScrcpyOptionsInit1_21) {
        super(ScrcpyOptions1_18, init, ScrcpyOptions1_21.DEFAULTS);
    }
+1 −1
Original line number Diff line number Diff line
@@ -77,7 +77,7 @@ export abstract class ScrcpyOptions<T extends object> {

    readonly value: Required<T>;

    get clipboard(): ReadableStream<string> {
    get clipboard(): ReadableStream<string> | undefined {
        return this.#base.clipboard;
    }