2024-02-03 08:02:38 +00:00
|
|
|
const createLogger = require('hexo-log');
|
2019-12-23 21:18:59 +00:00
|
|
|
const { Component } = require('inferno');
|
2020-01-23 04:07:43 +00:00
|
|
|
const view = require('hexo-component-inferno/lib/core/view');
|
2019-12-23 21:18:59 +00:00
|
|
|
|
2024-02-03 08:29:06 +00:00
|
|
|
const logger = typeof createLogger === 'function' ? createLogger() : createLogger.default();
|
2024-02-03 08:02:38 +00:00
|
|
|
|
2019-12-23 21:18:59 +00:00
|
|
|
module.exports = class extends Component {
|
|
|
|
render() {
|
|
|
|
const { config, helper } = this.props;
|
|
|
|
const { __ } = helper;
|
2020-01-08 06:14:58 +00:00
|
|
|
const { donates = [] } = config;
|
|
|
|
if (!Array.isArray(donates) || !donates.length) {
|
2019-12-23 21:18:59 +00:00
|
|
|
return null;
|
|
|
|
}
|
2019-12-24 05:36:39 +00:00
|
|
|
return <div class="card">
|
|
|
|
<div class="card-content">
|
|
|
|
<h3 class="menu-label has-text-centered">{__('donate.title')}</h3>
|
|
|
|
<div class="buttons is-centered">
|
2020-01-08 06:14:58 +00:00
|
|
|
{donates.map(service => {
|
2019-12-23 21:18:59 +00:00
|
|
|
const type = service.type;
|
|
|
|
if (typeof type === 'string') {
|
|
|
|
try {
|
2020-03-08 17:09:48 +00:00
|
|
|
let Donate = view.require('donate/' + type);
|
|
|
|
Donate = Donate.Cacheable ? Donate.Cacheable : Donate;
|
2019-12-23 21:18:59 +00:00
|
|
|
return <Donate helper={helper} donate={service} />;
|
|
|
|
} catch (e) {
|
2019-12-24 05:36:39 +00:00
|
|
|
logger.w(`Icarus cannot load donate button "${type}"`);
|
2019-12-23 21:18:59 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
})}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>;
|
|
|
|
}
|
|
|
|
};
|