// Copyright 2026 The Casdoor Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

import React from "react";
import {Checkbox, Col, Row, Switch} from "antd";
import * as Setting from "../Setting";
import i18next from "i18next";
import * as Web3Auth from "../auth/Web3Auth";

export function renderWeb3ProviderFields(provider, updateProviderField) {
  const getWalletValue = () => {
    try {
      return JSON.parse(provider.metadata);
    } catch {
      return ["injected"];
    }
  };

  return (
    <React.Fragment>
      <Row style={{marginTop: "20px"}} >
        <Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
          {Setting.getLabel(i18next.t("provider:Enable proxy"), i18next.t("provider:Enable proxy - Tooltip"))} :
        </Col>
        <Col span={1} >
          <Switch checked={provider.enableProxy} onChange={checked => {
            updateProviderField("enableProxy", checked);
          }} />
        </Col>
      </Row>
      {provider.type === "Web3Onboard" ? (
        <Row style={{marginTop: "20px"}} >
          <Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
            {Setting.getLabel(i18next.t("provider:Wallets"), i18next.t("provider:Wallets - Tooltip"))} :
          </Col>
          <Col span={22}>
            <Checkbox.Group
              options={Web3Auth.getWeb3OnboardWalletsOptions()}
              value={getWalletValue()}
              onChange={options => {
                updateProviderField("metadata", JSON.stringify(options));
              }}
            />
          </Col>
        </Row>
      ) : null}
    </React.Fragment>
  );
}
