mirror of
https://github.com/farcasclaudiu/openclaw.git
synced 2026-06-28 21:01:43 +03:00
refactor(signal): share rpc context
This commit is contained in:
@@ -0,0 +1,24 @@
|
|||||||
|
import { loadConfig } from "../config/config.js";
|
||||||
|
import { resolveSignalAccount } from "./accounts.js";
|
||||||
|
|
||||||
|
export function resolveSignalRpcContext(
|
||||||
|
opts: { baseUrl?: string; account?: string; accountId?: string },
|
||||||
|
accountInfo?: ReturnType<typeof resolveSignalAccount>,
|
||||||
|
) {
|
||||||
|
const hasBaseUrl = Boolean(opts.baseUrl?.trim());
|
||||||
|
const hasAccount = Boolean(opts.account?.trim());
|
||||||
|
const resolvedAccount =
|
||||||
|
accountInfo ||
|
||||||
|
(!hasBaseUrl || !hasAccount
|
||||||
|
? resolveSignalAccount({
|
||||||
|
cfg: loadConfig(),
|
||||||
|
accountId: opts.accountId,
|
||||||
|
})
|
||||||
|
: undefined);
|
||||||
|
const baseUrl = opts.baseUrl?.trim() || resolvedAccount?.baseUrl;
|
||||||
|
if (!baseUrl) {
|
||||||
|
throw new Error("Signal base URL is required");
|
||||||
|
}
|
||||||
|
const account = opts.account?.trim() || resolvedAccount?.config.account?.trim();
|
||||||
|
return { baseUrl, account };
|
||||||
|
}
|
||||||
@@ -5,6 +5,7 @@
|
|||||||
import { loadConfig } from "../config/config.js";
|
import { loadConfig } from "../config/config.js";
|
||||||
import { resolveSignalAccount } from "./accounts.js";
|
import { resolveSignalAccount } from "./accounts.js";
|
||||||
import { signalRpcRequest } from "./client.js";
|
import { signalRpcRequest } from "./client.js";
|
||||||
|
import { resolveSignalRpcContext } from "./rpc-context.js";
|
||||||
|
|
||||||
export type SignalReactionOpts = {
|
export type SignalReactionOpts = {
|
||||||
baseUrl?: string;
|
baseUrl?: string;
|
||||||
@@ -59,28 +60,6 @@ function resolveTargetAuthorParams(params: {
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
function resolveReactionRpcContext(
|
|
||||||
opts: SignalReactionOpts,
|
|
||||||
accountInfo?: ReturnType<typeof resolveSignalAccount>,
|
|
||||||
) {
|
|
||||||
const hasBaseUrl = Boolean(opts.baseUrl?.trim());
|
|
||||||
const hasAccount = Boolean(opts.account?.trim());
|
|
||||||
const resolvedAccount =
|
|
||||||
accountInfo ||
|
|
||||||
(!hasBaseUrl || !hasAccount
|
|
||||||
? resolveSignalAccount({
|
|
||||||
cfg: loadConfig(),
|
|
||||||
accountId: opts.accountId,
|
|
||||||
})
|
|
||||||
: undefined);
|
|
||||||
const baseUrl = opts.baseUrl?.trim() || resolvedAccount?.baseUrl;
|
|
||||||
if (!baseUrl) {
|
|
||||||
throw new Error("Signal base URL is required");
|
|
||||||
}
|
|
||||||
const account = opts.account?.trim() || resolvedAccount?.config.account?.trim();
|
|
||||||
return { baseUrl, account };
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send a Signal reaction to a message
|
* Send a Signal reaction to a message
|
||||||
* @param recipient - UUID or E.164 phone number of the message author
|
* @param recipient - UUID or E.164 phone number of the message author
|
||||||
@@ -98,7 +77,7 @@ export async function sendReactionSignal(
|
|||||||
cfg: loadConfig(),
|
cfg: loadConfig(),
|
||||||
accountId: opts.accountId,
|
accountId: opts.accountId,
|
||||||
});
|
});
|
||||||
const { baseUrl, account } = resolveReactionRpcContext(opts, accountInfo);
|
const { baseUrl, account } = resolveSignalRpcContext(opts, accountInfo);
|
||||||
|
|
||||||
const normalizedRecipient = normalizeSignalUuid(recipient);
|
const normalizedRecipient = normalizeSignalUuid(recipient);
|
||||||
const groupId = opts.groupId?.trim();
|
const groupId = opts.groupId?.trim();
|
||||||
@@ -164,7 +143,7 @@ export async function removeReactionSignal(
|
|||||||
cfg: loadConfig(),
|
cfg: loadConfig(),
|
||||||
accountId: opts.accountId,
|
accountId: opts.accountId,
|
||||||
});
|
});
|
||||||
const { baseUrl, account } = resolveReactionRpcContext(opts, accountInfo);
|
const { baseUrl, account } = resolveSignalRpcContext(opts, accountInfo);
|
||||||
|
|
||||||
const normalizedRecipient = normalizeSignalUuid(recipient);
|
const normalizedRecipient = normalizeSignalUuid(recipient);
|
||||||
const groupId = opts.groupId?.trim();
|
const groupId = opts.groupId?.trim();
|
||||||
|
|||||||
+1
-22
@@ -6,6 +6,7 @@ import { loadWebMedia } from "../web/media.js";
|
|||||||
import { resolveSignalAccount } from "./accounts.js";
|
import { resolveSignalAccount } from "./accounts.js";
|
||||||
import { signalRpcRequest } from "./client.js";
|
import { signalRpcRequest } from "./client.js";
|
||||||
import { markdownToSignalText, type SignalTextStyleRange } from "./format.js";
|
import { markdownToSignalText, type SignalTextStyleRange } from "./format.js";
|
||||||
|
import { resolveSignalRpcContext } from "./rpc-context.js";
|
||||||
|
|
||||||
export type SignalSendOpts = {
|
export type SignalSendOpts = {
|
||||||
baseUrl?: string;
|
baseUrl?: string;
|
||||||
@@ -94,28 +95,6 @@ function buildTargetParams(
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
function resolveSignalRpcContext(
|
|
||||||
opts: SignalRpcOpts,
|
|
||||||
accountInfo?: ReturnType<typeof resolveSignalAccount>,
|
|
||||||
) {
|
|
||||||
const hasBaseUrl = Boolean(opts.baseUrl?.trim());
|
|
||||||
const hasAccount = Boolean(opts.account?.trim());
|
|
||||||
const resolvedAccount =
|
|
||||||
accountInfo ||
|
|
||||||
(!hasBaseUrl || !hasAccount
|
|
||||||
? resolveSignalAccount({
|
|
||||||
cfg: loadConfig(),
|
|
||||||
accountId: opts.accountId,
|
|
||||||
})
|
|
||||||
: undefined);
|
|
||||||
const baseUrl = opts.baseUrl?.trim() || resolvedAccount?.baseUrl;
|
|
||||||
if (!baseUrl) {
|
|
||||||
throw new Error("Signal base URL is required");
|
|
||||||
}
|
|
||||||
const account = opts.account?.trim() || resolvedAccount?.config.account?.trim();
|
|
||||||
return { baseUrl, account };
|
|
||||||
}
|
|
||||||
|
|
||||||
async function resolveAttachment(
|
async function resolveAttachment(
|
||||||
mediaUrl: string,
|
mediaUrl: string,
|
||||||
maxBytes: number,
|
maxBytes: number,
|
||||||
|
|||||||
Reference in New Issue
Block a user