You've already forked AstralRinth
forked from didirus/AstralRinth
Added mobile friendly ads & ads (#161)
* Fix spacing issues on mobile * Added back linting on modules directory. Please don't look at the dirty fixes :x * Add support for responsive ads. * Add lazy loading of images.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
export const DEFAULT_OPTIONS = {
|
||||
enabled: false,
|
||||
script_url: 'https://example.com',
|
||||
tracking_code: 'xxx'
|
||||
enabled: false,
|
||||
script_url: 'https://example.com',
|
||||
tracking_code: 'xxx',
|
||||
}
|
||||
export const UNAMI_LIB_TAG_ID = 'unami-import'
|
||||
export const UNAMI_LIB_TAG_ID = 'unami-import'
|
||||
|
||||
@@ -1,22 +1,24 @@
|
||||
import {
|
||||
DEFAULT_OPTIONS,
|
||||
UNAMI_LIB_TAG_ID
|
||||
} from './constants';
|
||||
import { DEFAULT_OPTIONS, UNAMI_LIB_TAG_ID } from './constants'
|
||||
|
||||
const { resolve } = require('path');
|
||||
const { resolve } = require('path')
|
||||
|
||||
// eslint-disable-next-line require-await
|
||||
module.exports = async function module(moduleOptions) {
|
||||
const options = Object.assign(DEFAULT_OPTIONS, this.options.analytics, moduleOptions);
|
||||
const options = Object.assign(
|
||||
DEFAULT_OPTIONS,
|
||||
this.options.analytics,
|
||||
moduleOptions
|
||||
)
|
||||
|
||||
const templatesOptions = {
|
||||
...options,
|
||||
UNAMI_LIB_TAG_ID
|
||||
};
|
||||
|
||||
this.addPlugin({
|
||||
src: resolve(__dirname, 'templates/plugin.js'),
|
||||
fileName: 'analytics/plugin.js',
|
||||
options: templatesOptions,
|
||||
});
|
||||
};
|
||||
module.exports.meta = require('../package.json');
|
||||
const templatesOptions = {
|
||||
...options,
|
||||
UNAMI_LIB_TAG_ID,
|
||||
}
|
||||
|
||||
this.addPlugin({
|
||||
src: resolve(__dirname, 'templates/plugin.js'),
|
||||
fileName: 'analytics/plugin.js',
|
||||
options: templatesOptions,
|
||||
})
|
||||
}
|
||||
module.exports.meta = require('../package.json')
|
||||
|
||||
@@ -1,64 +1,35 @@
|
||||
import Vue from 'vue';
|
||||
|
||||
function isAnalyticsOn(ctx) {
|
||||
let cookies = null
|
||||
if (ctx.req != null) {
|
||||
//Server side rendering
|
||||
cookies = ctx.req.headers.cookie;
|
||||
} else {
|
||||
// Rely on the client
|
||||
cookies = document.cookie;
|
||||
}
|
||||
if (cookies == null) return false
|
||||
let processed = {}
|
||||
cookies.split(';').forEach((e) => {
|
||||
let val = e.trim().split('=');
|
||||
processed[val[0]] = decodeURI(val[1]);
|
||||
})
|
||||
let scopes = decodeURIComponent(processed['modrinth-scopes']).split(",");
|
||||
return (scopes !== null && scopes.includes('analytics'));
|
||||
}
|
||||
|
||||
// eslint-disable-next-line require-await
|
||||
export default async function (ctx, inject) {
|
||||
const config = (ctx.$config && ctx.$config.analytics) || {}
|
||||
|
||||
const { app } = ctx;
|
||||
const config = ctx.$config && ctx.$config.analytics || {};
|
||||
|
||||
const url = config.script_url ?? '<%= options.script_url %>';
|
||||
const tag = config.tracking_code ?? '<%= options.tracking_code %>';
|
||||
const enabled = config.enabled ?? <%= options.enabled || false %>;
|
||||
const url = config.script_url ?? '<%= options.script_url %>'
|
||||
const tag = config.tracking_code ?? '<%= options.tracking_code %>'
|
||||
// eslint-disable-next-line
|
||||
const enabled = config.enabled ?? ('<%= options.enabled || false %>' === 'true');
|
||||
// Check if the parameters are not changed by runtime config:
|
||||
|
||||
|
||||
|
||||
const UNAMI_LIB_TAG_ID = '<%= options.UNAMI_LIB_TAG_ID %>';
|
||||
|
||||
const UNAMI_LIB_TAG_ID = '<%= options.UNAMI_LIB_TAG_ID %>'
|
||||
|
||||
if (!enabled) {
|
||||
return;
|
||||
return
|
||||
}
|
||||
|
||||
const injectScript = (script) => {
|
||||
const scriptIndex = ctx.app.head.script.findIndex(s => s.hid === script.hid);
|
||||
const scriptIndex = ctx.app.head.script.findIndex(
|
||||
(s) => s.hid === script.hid
|
||||
)
|
||||
if (scriptIndex !== -1) {
|
||||
ctx.app.head.script[scriptIndex] = script;
|
||||
ctx.app.head.script[scriptIndex] = script
|
||||
} else {
|
||||
ctx.app.head.script.push(script);
|
||||
ctx.app.head.script.push(script)
|
||||
}
|
||||
};
|
||||
// if (isAnalyticsOn(ctx)) {
|
||||
// Inject unami
|
||||
const analyticsScript = {
|
||||
hid: UNAMI_LIB_TAG_ID,
|
||||
src: url,
|
||||
'data-website-id': 'c37613de-245d-4767-90e7-ba7980a4f1a2',
|
||||
async: true,
|
||||
defer: true,
|
||||
};
|
||||
injectScript(analyticsScript);
|
||||
// } else {
|
||||
// console.log("Analytics scope was denied.")
|
||||
// }
|
||||
|
||||
}
|
||||
const analyticsScript = {
|
||||
hid: UNAMI_LIB_TAG_ID,
|
||||
src: url,
|
||||
'data-website-id': tag,
|
||||
async: true,
|
||||
defer: true,
|
||||
}
|
||||
injectScript(analyticsScript)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user