Fixed some minor issues
parent
e8f23ec609
commit
2cf94eaf4b
|
@ -2,7 +2,14 @@ import * as loader from "tc-loader";
|
|||
import {Stage} from "tc-loader";
|
||||
import {config} from "tc-shared/i18n/localize";
|
||||
import {getBackend} from "tc-shared/backend";
|
||||
import {ClientServiceConfig, ClientServiceInvite, ClientServices, ClientSessionType, LocalAgent} from "tc-services";
|
||||
import {
|
||||
ClientServiceConfig,
|
||||
ClientServiceInvite,
|
||||
ClientServices,
|
||||
ClientSessionType,
|
||||
initializeClientServices,
|
||||
LocalAgent
|
||||
} from "tc-services";
|
||||
|
||||
import translation_config = config.translation_config;
|
||||
|
||||
|
@ -12,6 +19,7 @@ export let clientServiceInvite: ClientServiceInvite;
|
|||
loader.register_task(Stage.JAVASCRIPT_INITIALIZING, {
|
||||
priority: 30,
|
||||
function: async () => {
|
||||
initializeClientServices();
|
||||
clientServices = new ClientServices(new class implements ClientServiceConfig {
|
||||
getServiceHost(): string {
|
||||
//return "localhost:1244";
|
||||
|
|
|
@ -142,6 +142,8 @@ export enum ErrorCode {
|
|||
SERVER_CONNECT_BANNED = 0xD01,
|
||||
BAN_FLOODING = 0xD03,
|
||||
TOKEN_INVALID_ID = 0xF00,
|
||||
TOKEN_EXPIRED = 0xf10,
|
||||
TOKEN_USE_LIMIT_EXCEEDED = 0xf11,
|
||||
WEB_HANDSHAKE_INVALID = 0x1000,
|
||||
WEB_HANDSHAKE_UNSUPPORTED = 0x1001,
|
||||
WEB_HANDSHAKE_IDENTITY_UNSUPPORTED = 0x1002,
|
||||
|
|
|
@ -51,6 +51,8 @@ import "./clientservice";
|
|||
import "./text/bbcode/InviteController";
|
||||
import {clientServiceInvite} from "tc-shared/clientservice";
|
||||
import {ActionResult} from "tc-services";
|
||||
import {CommandResult} from "tc-shared/connection/ServerConnectionDeclaration";
|
||||
import {ErrorCode} from "tc-shared/connection/ErrorCode";
|
||||
|
||||
assertMainApplication();
|
||||
|
||||
|
@ -218,6 +220,8 @@ async function doHandleConnectRequest(serverAddress: string, serverUniqueId: str
|
|||
const channel = parameters.getValue(AppParameters.KEY_CONNECT_CHANNEL, undefined);
|
||||
const channelPassword = parameters.getValue(AppParameters.KEY_CONNECT_CHANNEL_PASSWORD, undefined);
|
||||
|
||||
const connectToken = parameters.getValue(AppParameters.KEY_CONNECT_TOKEN, undefined);
|
||||
|
||||
if(!targetServerConnection) {
|
||||
targetServerConnection = server_connections.getActiveConnectionHandler();
|
||||
if(targetServerConnection.connected) {
|
||||
|
@ -229,12 +233,29 @@ async function doHandleConnectRequest(serverAddress: string, serverUniqueId: str
|
|||
if(targetServerConnection.getCurrentServerUniqueId() === serverUniqueId) {
|
||||
/* Just join the new channel and may use the token (before) */
|
||||
|
||||
/* TODO: Use the token! */
|
||||
let containsToken = false;
|
||||
if(connectToken) {
|
||||
try {
|
||||
await targetServerConnection.serverConnection.send_command("tokenuse", { token: connectToken }, { process_result: false });
|
||||
} catch (error) {
|
||||
if(error instanceof CommandResult) {
|
||||
if(error.id === ErrorCode.TOKEN_INVALID_ID) {
|
||||
targetServerConnection.log.log("error.custom", { message: tr("Try to use invite key token but the token is invalid.")});
|
||||
} else if(error.id == ErrorCode.TOKEN_EXPIRED) {
|
||||
targetServerConnection.log.log("error.custom", { message: tr("Try to use invite key token but the token is expired.")});
|
||||
} else if(error.id === ErrorCode.TOKEN_USE_LIMIT_EXCEEDED) {
|
||||
targetServerConnection.log.log("error.custom", { message: tr("Try to use invite key token but the token has been used too many times.")});
|
||||
} else {
|
||||
targetServerConnection.log.log("error.custom", { message: tra("Try to use invite key token but an error occurred: {}", error.formattedMessage())});
|
||||
}
|
||||
} else {
|
||||
logError(LogCategory.GENERAL, tr("Failed to use token: {}"), error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!channel) {
|
||||
/* No need to join any channel */
|
||||
if(!containsToken) {
|
||||
if(!connectToken) {
|
||||
createInfoModal(tr("Already connected"), tr("You're already connected to the target server.")).open();
|
||||
} else {
|
||||
/* Don't show a message since a token has been used */
|
||||
|
@ -263,7 +284,8 @@ async function doHandleConnectRequest(serverAddress: string, serverUniqueId: str
|
|||
}
|
||||
|
||||
targetChannel.setCachedHashedPassword(channelPassword);
|
||||
if(await targetChannel.joinChannel()) {
|
||||
/* Force join the channel. Either we have the password, can ignore the password or we don't want to join. */
|
||||
if(await targetChannel.joinChannel(true)) {
|
||||
return { status: "success" };
|
||||
} else {
|
||||
/* TODO: More detail? */
|
||||
|
@ -277,7 +299,7 @@ async function doHandleConnectRequest(serverAddress: string, serverUniqueId: str
|
|||
nicknameSpecified: false,
|
||||
|
||||
profile: profile,
|
||||
token: undefined,
|
||||
token: connectToken,
|
||||
|
||||
serverPassword: serverPassword,
|
||||
serverPasswordHashed: passwordsHashed,
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import * as log from "../log";
|
||||
import {LogCategory, logDebug, logTrace, logWarn} from "../log";
|
||||
import {
|
||||
CodeToken,
|
||||
|
|
|
@ -699,7 +699,9 @@ export class ChannelEntry extends ChannelTreeEntry<ChannelEvents> {
|
|||
|
||||
}
|
||||
|
||||
let passwordPrompted = false;
|
||||
if(this.properties.channel_flag_password === true && !this.cachedPasswordHash && !ignorePasswordFlag) {
|
||||
passwordPrompted = true;
|
||||
const password = await this.requestChannelPassword(PermissionType.B_CHANNEL_JOIN_IGNORE_PASSWORD);
|
||||
if(typeof password === "undefined") {
|
||||
/* aborted */
|
||||
|
@ -717,8 +719,12 @@ export class ChannelEntry extends ChannelTreeEntry<ChannelEvents> {
|
|||
return true;
|
||||
} catch (error) {
|
||||
if(error instanceof CommandResult) {
|
||||
if(error.id == ErrorCode.CHANNEL_INVALID_PASSWORD) { //Invalid password
|
||||
if(error.id == ErrorCode.CHANNEL_INVALID_PASSWORD) {
|
||||
this.invalidateCachedPassword();
|
||||
if(!passwordPrompted) {
|
||||
/* It seems like our cached password isn't valid any more */
|
||||
return await this.joinChannel(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
|
Loading…
Reference in New Issue