diff --git a/CHANGELOG.md b/CHANGELOG.md index bfe371b3f..c563c2883 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Added - Block mature content when accessed directly from URL _community pr!_ ([#4560](https://github.com/lbryio/lbry-desktop/pull/4560)) +- You can now add LBRY as a search engine in your browser (via OpenSearch) _community pr!_ ([#4640](https://github.com/lbryio/lbry-desktop/pull/4640)) ### Changed diff --git a/static/opensearch.xml b/static/opensearch.xml new file mode 100644 index 000000000..3b73b6ac2 --- /dev/null +++ b/static/opensearch.xml @@ -0,0 +1,4 @@ + + + + diff --git a/web/src/html.js b/web/src/html.js index e2b541dcc..3532d6e83 100644 --- a/web/src/html.js +++ b/web/src/html.js @@ -59,7 +59,9 @@ function buildOgMetadata(overrideOptions = {}) { `\n` + `\n` + '\n' + - ``; + `` + + ``; return head; } diff --git a/web/src/xml.js b/web/src/xml.js new file mode 100644 index 000000000..bad950406 --- /dev/null +++ b/web/src/xml.js @@ -0,0 +1,18 @@ +const { URL, SITE_TITLE } = require('../../config.js'); + +function getOpenSearchXml() { + return ( + `${SITE_TITLE}` + + `Search ${SITE_TITLE}` + + 'UTF-8' + + `${URL}/public/favicon.png` + + `` + + `${URL}` + ); +} + +function insertVariableXml(fullXml, xmlToInsert) { + return fullXml.replace(/.*/s, xmlToInsert); +} + +module.exports = { getOpenSearchXml, insertVariableXml }; diff --git a/web/webpack.config.js b/web/webpack.config.js index 5a13c0d54..c89753fb2 100644 --- a/web/webpack.config.js +++ b/web/webpack.config.js @@ -7,6 +7,7 @@ const CopyWebpackPlugin = require('copy-webpack-plugin'); const { DefinePlugin, ProvidePlugin } = require('webpack'); const SentryWebpackPlugin = require('@sentry/webpack-plugin'); const { insertToHead, buildBasicOgMetadata } = require('./src/html'); +const { insertVariableXml, getOpenSearchXml } = require('./src/xml'); const CUSTOM_ROOT = path.resolve(__dirname, '../custom/'); const STATIC_ROOT = path.resolve(__dirname, '../static/'); @@ -24,6 +25,13 @@ const copyWebpackCommands = [ return insertToHead(content.toString(), buildBasicOgMetadata()); }, }, + { + from: `${STATIC_ROOT}/opensearch.xml`, + to: `${DIST_ROOT}/opensearch.xml`, + transform(content, path) { + return insertVariableXml(content.toString(), getOpenSearchXml()); + }, + }, { from: `${STATIC_ROOT}/img/favicon.png`, to: `${DIST_ROOT}/public/favicon.png`,