110 lines
2.6 KiB
JavaScript
110 lines
2.6 KiB
JavaScript
'use strict'
|
|
|
|
const { addv } = require('../text-formatters')
|
|
const { version: versionColor } = require('../color-formatters')
|
|
const BaseWordpress = require('./wordpress-base')
|
|
const { versionColorForWordpressVersion } = require('./wordpress-version-color')
|
|
|
|
class WordpressPluginRequiresVersion extends BaseWordpress {
|
|
static get category() {
|
|
return 'platform-support'
|
|
}
|
|
|
|
static get route() {
|
|
return {
|
|
base: `wordpress/plugin/wp-version`,
|
|
pattern: ':slug',
|
|
}
|
|
}
|
|
|
|
static get examples() {
|
|
return [
|
|
{
|
|
title: 'WordPress Plugin: Required WP Version',
|
|
namedParams: { slug: 'bbpress' },
|
|
staticPreview: this.render({ wordpressVersion: '4.8' }),
|
|
},
|
|
]
|
|
}
|
|
|
|
static get defaultBadgeData() {
|
|
return { label: 'wordpress' }
|
|
}
|
|
|
|
static render({ wordpressVersion }) {
|
|
return {
|
|
message: addv(wordpressVersion),
|
|
color: versionColor(wordpressVersion),
|
|
}
|
|
}
|
|
|
|
async handle({ slug }) {
|
|
const { requires: wordpressVersion } = await this.fetch({
|
|
extensionType: 'plugin',
|
|
slug,
|
|
})
|
|
return this.constructor.render({ wordpressVersion })
|
|
}
|
|
}
|
|
|
|
class WordpressPluginTestedVersion extends BaseWordpress {
|
|
static get category() {
|
|
return 'platform-support'
|
|
}
|
|
|
|
static get route() {
|
|
return {
|
|
base: `wordpress/plugin/tested`,
|
|
pattern: ':slug',
|
|
}
|
|
}
|
|
|
|
static get examples() {
|
|
return [
|
|
{
|
|
title: 'WordPress Plugin: Tested WP Version',
|
|
namedParams: { slug: 'bbpress' },
|
|
staticPreview: this.renderStaticPreview({
|
|
testedVersion: '4.9.8',
|
|
}),
|
|
},
|
|
]
|
|
}
|
|
|
|
static get defaultBadgeData() {
|
|
return { label: 'wordpress' }
|
|
}
|
|
|
|
static renderStaticPreview({ testedVersion }) {
|
|
// Since this badge has an async `render()` function, but `get examples()` has to
|
|
// be synchronous, this method exists. It should return the same value as the
|
|
// real `render()`.
|
|
return {
|
|
message: `${addv(testedVersion)} tested`,
|
|
color: 'brightgreen',
|
|
}
|
|
}
|
|
|
|
static async render({ testedVersion }) {
|
|
// Atypically, the `render()` function of this badge is `async` because it needs to pull
|
|
// data from the server.
|
|
return {
|
|
message: `${addv(testedVersion)} tested`,
|
|
color: await versionColorForWordpressVersion(testedVersion),
|
|
}
|
|
}
|
|
|
|
async handle({ slug }) {
|
|
const { tested: testedVersion } = await this.fetch({
|
|
extensionType: 'plugin',
|
|
slug,
|
|
})
|
|
return this.constructor.render({ testedVersion })
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
WordpressPluginRequiresVersion,
|
|
WordpressPluginTestedVersion,
|
|
}
|