mirror of
https://github.com/formbricks/formbricks.git
synced 2026-04-23 05:17:49 -05:00
fix: merges the app and website js sdk into @formbricks/js (#3314)
Co-authored-by: Matthias Nannt <mail@matthiasnannt.com>
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
import React, { useCallback, useEffect, useSyncExternalStore } from "react";
|
||||
import { type TJsAppConfigInput } from "@formbricks/types/js";
|
||||
import { Logger } from "../../js-core/src/shared/logger";
|
||||
import { type TJsReactNativeConfigInput } from "@formbricks/types/js";
|
||||
import { Logger } from "../../js-core/src/lib/logger";
|
||||
import { init } from "./lib";
|
||||
import { SurveyStore } from "./lib/survey-store";
|
||||
import { SurveyWebView } from "./survey-web-view";
|
||||
|
||||
interface FormbricksProps {
|
||||
initConfig: TJsAppConfigInput;
|
||||
initConfig: TJsReactNativeConfigInput;
|
||||
}
|
||||
const surveyStore = SurveyStore.getInstance();
|
||||
const logger = Logger.getInstance();
|
||||
|
||||
@@ -5,9 +5,9 @@ import {
|
||||
type Result,
|
||||
err,
|
||||
okVoid,
|
||||
} from "../../../js-core/src/shared/errors";
|
||||
import { Logger } from "../../../js-core/src/shared/logger";
|
||||
import { shouldDisplayBasedOnPercentage } from "../../../js-core/src/shared/utils";
|
||||
} from "../../../js-core/src/lib/errors";
|
||||
import { Logger } from "../../../js-core/src/lib/logger";
|
||||
import { shouldDisplayBasedOnPercentage } from "../../../js-core/src/lib/utils";
|
||||
import { appConfig } from "./config";
|
||||
import { SurveyStore } from "./survey-store";
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import { FormbricksAPI } from "@formbricks/api";
|
||||
import type { TAttributes } from "@formbricks/types/attributes";
|
||||
import { type Result, err, ok } from "@formbricks/types/error-handlers";
|
||||
import type { NetworkError } from "@formbricks/types/errors";
|
||||
import { Logger } from "../../../js-core/src/shared/logger";
|
||||
import { Logger } from "../../../js-core/src/lib/logger";
|
||||
import { appConfig } from "./config";
|
||||
|
||||
const logger = Logger.getInstance();
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
import { wrapThrowsAsync } from "@formbricks/types/error-handlers";
|
||||
import { type TJsPackageType } from "@formbricks/types/js";
|
||||
import { ErrorHandler, type Result } from "../../../js-core/src/shared/errors";
|
||||
import { ErrorHandler, type Result } from "../../../js-core/src/lib/errors";
|
||||
import { checkInitialized } from "./initialize";
|
||||
|
||||
export class CommandQueue {
|
||||
private queue: {
|
||||
command: (...args: any[]) => Promise<Result<void, unknown>> | Result<void, unknown> | Promise<void>;
|
||||
packageType: TJsPackageType;
|
||||
checkInitialized: boolean;
|
||||
commandArgs: any[];
|
||||
}[] = [];
|
||||
@@ -15,12 +13,11 @@ export class CommandQueue {
|
||||
private commandPromise: Promise<void> | null = null;
|
||||
|
||||
public add<A>(
|
||||
packageType: TJsPackageType,
|
||||
command: (...args: A[]) => Promise<Result<void, unknown>> | Result<void, unknown> | Promise<void>,
|
||||
shouldCheckInitialized = true,
|
||||
...args: A[]
|
||||
): void {
|
||||
this.queue.push({ command, checkInitialized: shouldCheckInitialized, commandArgs: args, packageType });
|
||||
this.queue.push({ command, checkInitialized: shouldCheckInitialized, commandArgs: args });
|
||||
|
||||
if (!this.running) {
|
||||
this.commandPromise = new Promise((resolve) => {
|
||||
|
||||
@@ -2,17 +2,13 @@
|
||||
import AsyncStorage from "@react-native-async-storage/async-storage";
|
||||
import { type Result, err, ok, wrapThrowsAsync } from "@formbricks/types/error-handlers";
|
||||
import type { TJsAppConfigUpdateInput, TJsRNConfig } from "@formbricks/types/js";
|
||||
import { RN_ASYNC_STORAGE_KEY } from "../../../js-core/src/shared/constants";
|
||||
|
||||
// LocalStorage implementation - default
|
||||
import { RN_ASYNC_STORAGE_KEY } from "../../../js-core/src/lib/constants";
|
||||
|
||||
export class RNConfig {
|
||||
private static instance: RNConfig | undefined;
|
||||
private config: TJsRNConfig | null = null;
|
||||
|
||||
private constructor() {
|
||||
// const localConfig = this.loadFromStorage();
|
||||
|
||||
this.loadFromStorage()
|
||||
.then((localConfig) => {
|
||||
if (localConfig.ok) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { type TJsAppConfigInput } from "@formbricks/types/js";
|
||||
import { ErrorHandler } from "../../../js-core/src/shared/errors";
|
||||
import { Logger } from "../../../js-core/src/shared/logger";
|
||||
import { type TJsReactNativeConfigInput } from "@formbricks/types/js";
|
||||
import { ErrorHandler } from "../../../js-core/src/lib/errors";
|
||||
import { Logger } from "../../../js-core/src/lib/logger";
|
||||
import { trackCodeAction } from "./actions";
|
||||
import { CommandQueue } from "./command-queue";
|
||||
import { initialize } from "./initialize";
|
||||
@@ -9,13 +9,13 @@ const logger = Logger.getInstance();
|
||||
logger.debug("Create command queue");
|
||||
const queue = new CommandQueue();
|
||||
|
||||
export const init = async (initConfig: TJsAppConfigInput): Promise<void> => {
|
||||
export const init = async (initConfig: TJsReactNativeConfigInput): Promise<void> => {
|
||||
ErrorHandler.init(initConfig.errorHandler);
|
||||
queue.add("app", initialize, false, initConfig);
|
||||
queue.add(initialize, false, initConfig);
|
||||
await queue.wait();
|
||||
};
|
||||
|
||||
export const track = async (name: string, properties = {}): Promise<void> => {
|
||||
queue.add<any>("app", trackCodeAction, true, name, properties);
|
||||
queue.add<any>(trackCodeAction, true, name, properties);
|
||||
await queue.wait();
|
||||
};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { type TAttributes } from "@formbricks/types/attributes";
|
||||
import { type TJsAppConfigInput, type TJsRNConfig } from "@formbricks/types/js";
|
||||
import { type TJsRNConfig, type TJsReactNativeConfigInput } from "@formbricks/types/js";
|
||||
import {
|
||||
ErrorHandler,
|
||||
type MissingFieldError,
|
||||
@@ -9,8 +9,8 @@ import {
|
||||
type Result,
|
||||
err,
|
||||
okVoid,
|
||||
} from "../../../js-core/src/shared/errors";
|
||||
import { Logger } from "../../../js-core/src/shared/logger";
|
||||
} from "../../../js-core/src/lib/errors";
|
||||
import { Logger } from "../../../js-core/src/lib/logger";
|
||||
import { trackAction } from "./actions";
|
||||
import { updateAttributes } from "./attributes";
|
||||
import { appConfig } from "./config";
|
||||
@@ -24,7 +24,7 @@ export const setIsInitialize = (state: boolean): void => {
|
||||
};
|
||||
|
||||
export const initialize = async (
|
||||
c: TJsAppConfigInput
|
||||
c: TJsReactNativeConfigInput
|
||||
): Promise<Result<void, MissingFieldError | NetworkError | MissingPersonError>> => {
|
||||
if (isInitialized) {
|
||||
logger.debug("Already initialized, skipping initialization.");
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { type NetworkError, type Result, err, okVoid } from "../../../js-core/src/shared/errors";
|
||||
import { Logger } from "../../../js-core/src/shared/logger";
|
||||
import { type NetworkError, type Result, err, okVoid } from "../../../js-core/src/lib/errors";
|
||||
import { Logger } from "../../../js-core/src/lib/logger";
|
||||
import { appConfig } from "./config";
|
||||
import { deinitalize, initialize } from "./initialize";
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import type { TAttributes } from "@formbricks/types/attributes";
|
||||
import { type Result, err, ok } from "@formbricks/types/error-handlers";
|
||||
import type { NetworkError } from "@formbricks/types/errors";
|
||||
import type { TJsAppState, TJsAppStateSync, TJsRNSyncParams } from "@formbricks/types/js";
|
||||
import { Logger } from "../../../js-core/src/shared/logger";
|
||||
import { Logger } from "../../../js-core/src/lib/logger";
|
||||
import type { RNConfig } from "./config";
|
||||
|
||||
const logger = Logger.getInstance();
|
||||
|
||||
@@ -14,8 +14,8 @@ import type { TJsFileUploadParams } from "@formbricks/types/js";
|
||||
import type { TResponseUpdate } from "@formbricks/types/responses";
|
||||
import type { TUploadFileConfig } from "@formbricks/types/storage";
|
||||
import type { TSurvey } from "@formbricks/types/surveys/types";
|
||||
import { Logger } from "../../js-core/src/shared/logger";
|
||||
import { getDefaultLanguageCode, getLanguageCode } from "../../js-core/src/shared/utils";
|
||||
import { Logger } from "../../js-core/src/lib/logger";
|
||||
import { getDefaultLanguageCode, getLanguageCode } from "../../js-core/src/lib/utils";
|
||||
import { appConfig } from "./lib/config";
|
||||
import { SurveyStore } from "./lib/survey-store";
|
||||
import { sync } from "./lib/sync";
|
||||
|
||||
Reference in New Issue
Block a user