Use new providerItem.

This commit is contained in:
Yang Luo
2021-06-14 21:35:19 +08:00
parent 9fe310f2b7
commit 5a852bfd1d
10 changed files with 132 additions and 82 deletions

View File

@ -162,15 +162,15 @@ class ApplicationListPage extends React.Component {
<List
size="small"
dataSource={providers}
renderItem={(row, i) => {
renderItem={(providerItem, i) => {
return (
<List.Item>
<div style={{display: "inline"}}>
<Tooltip placement="topLeft" title="Edit">
<Button style={{marginRight: "5px"}} icon={<EditOutlined />} size="small" onClick={() => Setting.goToLinkSoft(this, `/providers/${row}`)} />
<Button style={{marginRight: "5px"}} icon={<EditOutlined />} size="small" onClick={() => Setting.goToLinkSoft(this, `/providers/${providerItem.name}`)} />
</Tooltip>
<Link to={`/providers/${row}`}>
{row}
<Link to={`/providers/${providerItem.name}`}>
{providerItem.name}
</Link>
</div>
</List.Item>

View File

@ -179,16 +179,6 @@ class ProviderEditPage extends React.Component {
}} />
</Col>
</Row>
<Row style={{marginTop: '20px'}} >
<Col style={{marginTop: '5px'}} span={2}>
{i18next.t("application:Enable signup")}:
</Col>
<Col span={1} >
<Switch checked={this.state.provider.enableSignUp} onChange={checked => {
this.updateProviderField('enableSignUp', checked);
}} />
</Col>
</Row>
{
this.state.provider.category === "Email" ? (
<React.Fragment>

View File

@ -38,7 +38,7 @@ class ProviderTable extends React.Component {
}
addRow(table) {
let row = {name: "", canSignUp: false, canSignIn: true, canUnbind: true};
let row = {name: "Please select a provider", canSignUp: false, canSignIn: true, canUnbind: true, alertType: "None"};
if (table === undefined) {
table = [];
}
@ -73,9 +73,11 @@ class ProviderTable extends React.Component {
value={text}
onChange={value => {
this.updateField(table, index, 'name', value);
const provider = this.props.providers.filter(provider => provider.name === value)[0];
this.updateField(table, index, 'provider', provider);
}} >
{
this.props.providers.map((provider, index) => <Option key={index} value={provider.name}>{provider.name}</Option>)
this.props.providers.filter(provider => table.filter(providerItem => providerItem.name === provider.name).length === 0).map((provider, index) => <Option key={index} value={provider.name}>{provider.name}</Option>)
}
</Select>
)
@ -125,6 +127,27 @@ class ProviderTable extends React.Component {
)
}
},
{
title: i18next.t("provider:alertType"),
dataIndex: 'alertType',
key: 'alertType',
width: '120px',
render: (text, record, index) => {
return (
<Select virtual={false} style={{width: '100%'}} value={text} onChange={(value => {
this.updateField(table, index, 'alertType', value);
})}>
{
[
{id: 'None', name: 'None'},
{id: 'Once', name: 'Once'},
{id: 'Always', name: 'Always'},
].map((item, index) => <Option key={index} value={item.id}>{item.name}</Option>)
}
</Select>
)
}
},
{
title: i18next.t("general:Action"),
key: 'action',

View File

@ -38,24 +38,36 @@ function isLocalhost() {
return hostname === "localhost";
}
export function isProviderVisible(provider) {
if (provider.type !== "GitHub") {
export function isProviderVisible(providerItem) {
if (providerItem.provider === undefined || providerItem.provider === null) {
return false;
}
if (providerItem.provider.type !== "GitHub") {
return true;
}
if (isLocalhost()) {
return provider.name.includes("localhost");
return providerItem.provider.name.includes("localhost");
} else {
return !provider.name.includes("localhost");
return !providerItem.provider.name.includes("localhost");
}
}
export function isProviderVisibleForSignUp(provider) {
if (provider.enableSignUp === false) {
export function isProviderVisibleForSignUp(providerItem) {
if (providerItem.canSignUp === false) {
return false;
}
return isProviderVisible(provider);
return isProviderVisible(providerItem);
}
export function isProviderVisibleForSignIn(providerItem) {
if (providerItem.canSignIn === false) {
return false;
}
return isProviderVisible(providerItem);
}
export function parseJson(s) {

View File

@ -344,7 +344,7 @@ class UserEditPage extends React.Component {
<Col span={22} >
<div style={{marginBottom: 20}}>
{
this.state.application?.providerObjs.filter(provider => Setting.isProviderVisible(provider)).map((provider, index) => this.renderIdp(provider))
this.state.application?.providers.filter(providerItem => Setting.isProviderVisible(providerItem)).map((providerItem, index) => this.renderIdp(providerItem.provider))
}
</div>
</Col>

View File

@ -224,8 +224,8 @@ class LoginPage extends React.Component {
</Form.Item>
<Form.Item>
{
application.providerObjs.filter(provider => Setting.isProviderVisibleForSignUp(provider)).map(provider => {
return this.renderProviderLogo(provider, application, 30, 5, "small");
application.providers.filter(providerItem => Setting.isProviderVisibleForSignIn(providerItem)).map(providerItem => {
return this.renderProviderLogo(providerItem.provider, application, 30, 5, "small");
})
}
</Form.Item>
@ -245,8 +245,8 @@ class LoginPage extends React.Component {
</div>
<br/>
{
application.providerObjs.filter(provider => Setting.isProviderVisibleForSignUp(provider)).map(provider => {
return this.renderProviderLogo(provider, application, 40, 10, "big");
application.providers.filter(providerItem => Setting.isProviderVisibleForSignIn(providerItem)).map(providerItem => {
return this.renderProviderLogo(providerItem.provider, application, 40, 10, "big");
})
}
{