Skip to content

Commit 30ebf7b

Browse files
authored
Merge pull request umami-software#459 from mikecao/dev
v1.12.0
2 parents 0b8336f + 88452ad commit 30ebf7b

File tree

14 files changed

+443
-1807
lines changed

14 files changed

+443
-1807
lines changed

components/common/DropDown.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export default function DropDown({
2929
}
3030

3131
useDocumentClick(e => {
32-
if (!ref.current.contains(e.target)) {
32+
if (!ref.current?.contains(e.target)) {
3333
setShowMenu(false);
3434
}
3535
});

components/common/MenuButton.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export default function MenuButton({
3030
}
3131

3232
useDocumentClick(e => {
33-
if (!ref.current.contains(e.target)) {
33+
if (!ref.current?.contains(e.target)) {
3434
setShowMenu(false);
3535
}
3636
});

components/metrics/WebsiteHeader.js

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,23 @@ import Arrow from 'assets/arrow-right.svg';
1010
import styles from './WebsiteHeader.module.css';
1111

1212
export default function WebsiteHeader({ websiteId, title, domain, showLink = false }) {
13+
const header = showLink ? (
14+
<>
15+
<Favicon domain={domain} />
16+
<Link href="/website/[...id]" as={`/website/${websiteId}/${title}`}>
17+
{title}
18+
</Link>
19+
</>
20+
) : (
21+
<div>
22+
<Favicon domain={domain} />
23+
{title}
24+
</div>
25+
);
26+
1327
return (
1428
<PageHeader>
15-
<div className={styles.title}>
16-
<Favicon domain={domain} />
17-
{title}
18-
</div>
29+
<div className={styles.title}>{header}</div>
1930
<ActiveUsers className={styles.active} websiteId={websiteId} />
2031
<ButtonLayout align="right">
2132
<RefreshButton websiteId={websiteId} />

components/settings/AccountSettings.js

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,13 @@ export default function AccountSettings() {
2929

3030
const Checkmark = ({ is_admin }) => (is_admin ? <Icon icon={<Check />} size="medium" /> : null);
3131

32-
const DashboardLink = row =>
33-
row.is_admin ? null : (
34-
<Link href={`/dashboard/${row.user_id}/${row.username}`}>
35-
<a>
36-
<Icon icon={<LinkIcon />} />
37-
</a>
38-
</Link>
39-
);
32+
const DashboardLink = row => (
33+
<Link href={`/dashboard/${row.user_id}/${row.username}`}>
34+
<a>
35+
<Icon icon={<LinkIcon />} />
36+
</a>
37+
</Link>
38+
);
4039

4140
const Buttons = row =>
4241
row.username !== 'admin' ? (

components/settings/LanguageButton.module.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
.menu {
22
display: flex;
33
flex-flow: row wrap;
4-
min-width: 500px;
4+
min-width: 560px;
55
max-width: 100vw;
66
padding: 10px;
77
}

lang/pl-PL.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"label.login": "Zaloguj sie",
3333
"label.logout": "Wyloguj",
3434
"label.more": "Więcej",
35-
"label.name": "Name",
35+
"label.name": "Nazwa",
3636
"label.new-password": "Nowe hasło",
3737
"label.password": "Hasło",
3838
"label.passwords-dont-match": "Hasła się nie zgadzają",

lang/pt-BR.json

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
{
2+
"label.accounts": "Contas",
3+
"label.add-account": "Adicionar conta",
4+
"label.add-website": "Adicionar site",
5+
"label.administrator": "Administrador",
6+
"label.all": "Todos",
7+
"label.all-websites": "Todos os sites",
8+
"label.back": "Voltar",
9+
"label.cancel": "Cancelar",
10+
"label.change-password": "Alterar a senha",
11+
"label.confirm-password": "Confirme a nova senha",
12+
"label.copy-to-clipboard": "Copiar para a área de transferência",
13+
"label.current-password": "Senha atual",
14+
"label.custom-range": "Intervalo personalizado",
15+
"label.dashboard": "Painel",
16+
"label.date-range": "Intervalo de datas",
17+
"label.default-date-range": "Intervalo de datas predefinido",
18+
"label.delete": "Remover",
19+
"label.delete-account": "Remover conta",
20+
"label.delete-website": "Remover site",
21+
"label.dismiss": "Dispensar",
22+
"label.domain": "Domínio",
23+
"label.edit": "Editar",
24+
"label.edit-account": "Editar conta",
25+
"label.edit-website": "Editar site",
26+
"label.enable-share-url": "Ativar link de compartilhamento",
27+
"label.invalid": "Inválido",
28+
"label.invalid-domain": "Domínio inválido",
29+
"label.last-days": "Últimos {x} dias",
30+
"label.last-hours": "Últimas {x} horas",
31+
"label.logged-in-as": "Sessão iniciada como {username}",
32+
"label.login": "Iniciar sessão",
33+
"label.logout": "Sair",
34+
"label.more": "Mais",
35+
"label.name": "Nome",
36+
"label.new-password": "Nova senha",
37+
"label.password": "Senha",
38+
"label.passwords-dont-match": "As senhas não correspondem",
39+
"label.profile": "Perfil",
40+
"label.realtime": "Tempo real",
41+
"label.realtime-logs": "Relatório em tempo real",
42+
"label.refresh": "Atualizar",
43+
"label.required": "Obrigatório",
44+
"label.reset": "Redefinir",
45+
"label.save": "Salvar",
46+
"label.settings": "Configurações",
47+
"label.share-url": "Link de compartilhamento",
48+
"label.single-day": "Dia específico",
49+
"label.this-month": "Este mês",
50+
"label.this-week": "Esta semana",
51+
"label.this-year": "Este ano",
52+
"label.timezone": "Fuso horário",
53+
"label.today": "Hoje",
54+
"label.tracking-code": "Código de rastreamento",
55+
"label.unknown": "Desconhecido",
56+
"label.username": "Nome de usuário",
57+
"label.view-details": "Ver detalhes",
58+
"label.websites": "Sites",
59+
"message.active-users": "{x} {x, plural, one {visitante} other {visitantes}} neste momento",
60+
"message.confirm-delete": "Deseja realmente remover {target}?",
61+
"message.copied": "Copiado!",
62+
"message.delete-warning": "Todos os dados associados também serão eliminados.",
63+
"message.failure": "Ocorreu um erro.",
64+
"message.get-share-url": "Obter link de compartilhamento",
65+
"message.get-tracking-code": "Obter código de rastreamento",
66+
"message.go-to-settings": "Ir para as configurações",
67+
"message.incorrect-username-password": "O nome de usuário e/ou senha está incorreto.",
68+
"message.log.visitor": "Visitante de {country} usando {browser} no {device} {os}",
69+
"message.new-version-available": "Uma nova versão de umami {version} está disponível!",
70+
"message.no-data-available": "Sem dados disponíveis.",
71+
"message.no-websites-configured": "Nenhum site foi configurado ainda.",
72+
"message.page-not-found": "Página não encontrada.",
73+
"message.powered-by": "Distribuído por {name}",
74+
"message.save-success": "Salvo com sucesso.",
75+
"message.share-url": "Este é o link público de compartilhamento para {target}.",
76+
"message.track-stats": "Para gerar estatística para {target}, coloque o seguinte código no {head} do html do seu site.",
77+
"message.type-delete": "Escreva {delete} abaixo para continuar.",
78+
"metrics.actions": "Ações",
79+
"metrics.average-visit-time": "Tempo médio da visita",
80+
"metrics.bounce-rate": "Taxa de rejeição",
81+
"metrics.browsers": "Navegadores",
82+
"metrics.countries": "Países",
83+
"metrics.device.desktop": "Computador",
84+
"metrics.device.laptop": "Notebook",
85+
"metrics.device.mobile": "Celular",
86+
"metrics.device.tablet": "Tablet",
87+
"metrics.devices": "Dispositivos",
88+
"metrics.events": "Eventos",
89+
"metrics.filter.combined": "Combinado",
90+
"metrics.filter.domain-only": "Apenas domínio",
91+
"metrics.filter.raw": "Dados brutos",
92+
"metrics.operating-systems": "Sistemas operacionais",
93+
"metrics.page-views": "Visualizações de página",
94+
"metrics.pages": "Páginas",
95+
"metrics.referrers": "Referências",
96+
"metrics.unique-visitors": "Visitantes únicos",
97+
"metrics.views": "Visualizações",
98+
"metrics.visitors": "Visitantes"
99+
}

lib/constants.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ export const BROWSERS = {
116116
edge: 'Edge',
117117
'edge-ios': 'Edge (iOS)',
118118
yandexbrowser: 'Yandex',
119-
kakaotalk: 'KKaoTalk',
119+
kakaotalk: 'KaKaoTalk',
120120
samsung: 'Samsung',
121121
silk: 'Silk',
122122
miui: 'MIUI',

lib/lang.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
nl,
1818
pl,
1919
pt,
20+
ptBR,
2021
ro,
2122
ru,
2223
sv,
@@ -42,6 +43,7 @@ import svMessages from 'lang-compiled/sv-SE.json';
4243
import grMessages from 'lang-compiled/el-GR.json';
4344
import foMessages from 'lang-compiled/fo-FO.json';
4445
import ptMessages from 'lang-compiled/pt-PT.json';
46+
import ptBRMessages from 'lang-compiled/pt-BR.json';
4547
import roMessages from 'lang-compiled/ro-RO.json';
4648
import nbNOMessages from 'lang-compiled/nb-NO.json';
4749
import idMessages from 'lang-compiled/id-ID.json';
@@ -71,6 +73,7 @@ export const messages = {
7173
'el-GR': grMessages,
7274
'fo-FO': foMessages,
7375
'pt-PT': ptMessages,
76+
'pt-BR': ptBRMessages,
7477
'ro-RO': roMessages,
7578
'nb-NO': nbNOMessages,
7679
'id-ID': idMessages,
@@ -101,6 +104,7 @@ export const dateLocales = {
101104
'el-GR': el,
102105
'fo-FO': da,
103106
'pt-PT': pt,
107+
'pt-BR': ptBR,
104108
'ro-RO': ro,
105109
'nb-NO': nb,
106110
'id-ID': id,
@@ -135,6 +139,7 @@ export const menuOptions = [
135139
{ label: 'Norsk Bokmål', value: 'nb-NO', display: 'nb' },
136140
{ label: 'Polski', value: 'pl-PL', display: 'pl' },
137141
{ label: 'Português', value: 'pt-PT', display: 'pt' },
142+
{ label: 'Português do Brasil', value: 'pt-BR', display: 'pt-BR' },
138143
{ label: 'Русский', value: 'ru-RU', display: 'ru' },
139144
{ label: 'Română', value: 'ro-RO', display: 'ro' },
140145
{ label: 'Suomi', value: 'fi-FI', display: 'fi' },

package.json

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "umami",
3-
"version": "1.11.0",
3+
"version": "1.12.0",
44
"description": "A simple, fast, website analytics alternative to Google Analytics. ",
55
"author": "Mike Cao <[email protected]>",
66
"license": "MIT",
@@ -56,7 +56,7 @@
5656
}
5757
},
5858
"dependencies": {
59-
"@prisma/client": "2.14.0",
59+
"@prisma/client": "2.15.0",
6060
"@reduxjs/toolkit": "^1.5.0",
6161
"bcrypt": "^5.0.0",
6262
"chalk": "^4.1.0",
@@ -69,17 +69,17 @@
6969
"detect-browser": "^5.2.0",
7070
"dotenv": "^8.2.0",
7171
"formik": "^2.2.6",
72-
"immer": "^8.0.0",
72+
"immer": "^8.0.1",
7373
"is-localhost-ip": "^1.4.0",
7474
"isbot-fast": "^1.2.0",
7575
"jose": "2.0.3",
7676
"maxmind": "^4.3.1",
7777
"moment-timezone": "^0.5.32",
78-
"next": "^10.0.5",
78+
"next": "^10.0.6",
7979
"prompts": "2.4.0",
8080
"react": "^17.0.1",
8181
"react-dom": "^17.0.1",
82-
"react-intl": "^5.10.16",
82+
"react-intl": "^5.12.0",
8383
"react-redux": "^7.2.2",
8484
"react-simple-maps": "^2.3.0",
8585
"react-spring": "^8.0.27",
@@ -97,21 +97,21 @@
9797
},
9898
"devDependencies": {
9999
"@formatjs/cli": "^2.13.16",
100-
"@prisma/cli": "2.14.0",
100+
"@prisma/cli": "2.15.0",
101101
"@rollup/plugin-buble": "^0.21.3",
102-
"@rollup/plugin-node-resolve": "^11.0.1",
102+
"@rollup/plugin-node-resolve": "^11.1.1",
103103
"@rollup/plugin-replace": "^2.3.4",
104104
"@svgr/webpack": "^5.5.0",
105105
"cross-env": "^7.0.3",
106106
"del": "^6.0.0",
107107
"dotenv-cli": "^4.0.0",
108-
"eslint": "^7.17.0",
109-
"eslint-config-prettier": "^7.1.0",
108+
"eslint": "^7.19.0",
109+
"eslint-config-prettier": "^7.2.0",
110110
"eslint-plugin-prettier": "^3.3.1",
111111
"eslint-plugin-react": "^7.22.0",
112112
"eslint-plugin-react-hooks": "^4.2.0",
113113
"extract-react-intl-messages": "^4.1.1",
114-
"husky": "^4.3.7",
114+
"husky": "^4.3.8",
115115
"lint-staged": "^10.5.3",
116116
"loadtest": "5.1.2",
117117
"npm-run-all": "^4.1.5",
@@ -120,10 +120,10 @@
120120
"postcss-preset-env": "^6.7.0",
121121
"prettier": "^2.2.1",
122122
"prettier-eslint": "^12.0.0",
123-
"rollup": "^2.36.1",
123+
"rollup": "^2.38.3",
124124
"rollup-plugin-hashbang": "^2.2.2",
125125
"rollup-plugin-terser": "^7.0.2",
126-
"stylelint": "^13.8.0",
126+
"stylelint": "^13.9.0",
127127
"stylelint-config-css-modules": "^2.2.0",
128128
"stylelint-config-prettier": "^8.0.1",
129129
"stylelint-config-recommended": "^3.0.0",

public/country/pt-BR.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"AF":"Afeganist\u00e3o","ZA":"\u00c1frica do Sul","AL":"Alb\u00e2nia","DE":"Alemanha","AD":"Andorra","AO":"Angola","AI":"Anguila","AQ":"Ant\u00e1rtida","AG":"Ant\u00edgua e Barbuda","SA":"Ar\u00e1bia Saudita","DZ":"Arg\u00e9lia","AR":"Argentina","AM":"Arm\u00eania","AW":"Aruba","AU":"Austr\u00e1lia","AT":"\u00c1ustria","AZ":"Azerbaij\u00e3o","BS":"Bahamas","BH":"Bahrein","BD":"Bangladesh","BB":"Barbados","BE":"B\u00e9lgica","BZ":"Belize","BJ":"Benin","BM":"Bermudas","BY":"Bielorr\u00fassia","BO":"Bol\u00edvia","BA":"B\u00f3snia e Herzegovina","BW":"Botsuana","BR":"Brasil","BN":"Brunei","BG":"Bulg\u00e1ria","BF":"Burquina Faso","BI":"Burundi","BT":"But\u00e3o","CV":"Cabo Verde","CM":"Camar\u00f5es","KH":"Camboja","CA":"Canad\u00e1","QA":"Catar","KZ":"Cazaquist\u00e3o","TD":"Chade","CL":"Chile","CN":"China","CY":"Chipre","VA":"Cidade do Vaticano","CO":"Col\u00f4mbia","KM":"Comores","CD":"Congo - Kinshasa","KP":"Coreia do Norte","KR":"Coreia do Sul","CI":"Costa do Marfim","CR":"Costa Rica","HR":"Cro\u00e1cia","CU":"Cuba","CW":"Cura\u00e7ao","DK":"Dinamarca","DJ":"Djibuti","DM":"Dominica","EG":"Egito","SV":"El Salvador","AE":"Emirados \u00c1rabes Unidos","EC":"Equador","ER":"Eritreia","SK":"Eslov\u00e1quia","SI":"Eslov\u00eania","ES":"Espanha","SZ":"Essuat\u00edni","US":"Estados Unidos","EE":"Est\u00f4nia","ET":"Eti\u00f3pia","FJ":"Fiji","PH":"Filipinas","FI":"Finl\u00e2ndia","FR":"Fran\u00e7a","GA":"Gab\u00e3o","GM":"G\u00e2mbia","GH":"Gana","GE":"Ge\u00f3rgia","GI":"Gibraltar","GD":"Granada","GR":"Gr\u00e9cia","GL":"Groenl\u00e2ndia","GP":"Guadalupe","GU":"Guam","GT":"Guatemala","GG":"Guernsey","GY":"Guiana","GF":"Guiana Francesa","GN":"Guin\u00e9","GQ":"Guin\u00e9 Equatorial","GW":"Guin\u00e9-Bissau","HT":"Haiti","HN":"Honduras","HK":"Hong Kong, RAE da China","HU":"Hungria","YE":"I\u00eamen","BV":"Ilha Bouvet","CX":"Ilha Christmas","IM":"Ilha de Man","NF":"Ilha Norfolk","AX":"Ilhas Aland","KY":"Ilhas Cayman","CC":"Ilhas Cocos (Keeling)","CK":"Ilhas Cook","FO":"Ilhas Faroe","GS":"Ilhas Ge\u00f3rgia do Sul e Sandwich do Sul","HM":"Ilhas Heard e McDonald","FK":"Ilhas Malvinas","MP":"Ilhas Marianas do Norte","MH":"Ilhas Marshall","UM":"Ilhas Menores Distantes dos EUA","PN":"Ilhas Pitcairn","SB":"Ilhas Salom\u00e3o","TC":"Ilhas Turcas e Caicos","VI":"Ilhas Virgens Americanas","VG":"Ilhas Virgens Brit\u00e2nicas","IN":"\u00cdndia","ID":"Indon\u00e9sia","IR":"Ir\u00e3","IQ":"Iraque","IE":"Irlanda","IS":"Isl\u00e2ndia","IL":"Israel","IT":"It\u00e1lia","JM":"Jamaica","JP":"Jap\u00e3o","JE":"Jersey","JO":"Jord\u00e2nia","KW":"Kuwait","LA":"Laos","LS":"Lesoto","LV":"Let\u00f4nia","LB":"L\u00edbano","LR":"Lib\u00e9ria","LY":"L\u00edbia","LI":"Liechtenstein","LT":"Litu\u00e2nia","LU":"Luxemburgo","MO":"Macau, RAE da China","MK":"Maced\u00f4nia do Norte","MG":"Madagascar","MY":"Mal\u00e1sia","MW":"Malaui","MV":"Maldivas","ML":"Mali","MT":"Malta","MA":"Marrocos","MQ":"Martinica","MU":"Maur\u00edcio","MR":"Maurit\u00e2nia","YT":"Mayotte","MX":"M\u00e9xico","MM":"Mianmar (Birm\u00e2nia)","FM":"Micron\u00e9sia","MZ":"Mo\u00e7ambique","MD":"Moldova","MC":"M\u00f4naco","MN":"Mong\u00f3lia","ME":"Montenegro","MS":"Montserrat","NA":"Nam\u00edbia","NR":"Nauru","NP":"Nepal","NI":"Nicar\u00e1gua","NE":"N\u00edger","NG":"Nig\u00e9ria","NU":"Niue","NO":"Noruega","NC":"Nova Caled\u00f4nia","NZ":"Nova Zel\u00e2ndia","OM":"Om\u00e3","NL":"Pa\u00edses Baixos","BQ":"Pa\u00edses Baixos Caribenhos","PW":"Palau","PA":"Panam\u00e1","PG":"Papua-Nova Guin\u00e9","PK":"Paquist\u00e3o","PY":"Paraguai","PE":"Peru","PF":"Polin\u00e9sia Francesa","PL":"Pol\u00f4nia","PR":"Porto Rico","PT":"Portugal","KE":"Qu\u00eania","KG":"Quirguist\u00e3o","KI":"Quiribati","GB":"Reino Unido","CF":"Rep\u00fablica Centro-Africana","CG":"Rep\u00fablica do Congo","DO":"Rep\u00fablica Dominicana","RE":"Reuni\u00e3o","RO":"Rom\u00eania","RW":"Ruanda","RU":"R\u00fassia","EH":"Saara Ocidental","WS":"Samoa","AS":"Samoa Americana","SM":"San Marino","SH":"Santa Helena","LC":"Santa L\u00facia","BL":"S\u00e3o Bartolomeu","KN":"S\u00e3o Crist\u00f3v\u00e3o e N\u00e9vis","MF":"S\u00e3o Martinho","PM":"S\u00e3o Pedro e Miquel\u00e3o","ST":"S\u00e3o Tom\u00e9 e Pr\u00edncipe","VC":"S\u00e3o Vicente e Granadinas","SC":"Seicheles","SN":"Senegal","SL":"Serra Leoa","RS":"S\u00e9rvia","SG":"Singapura","SX":"Sint Maarten","SY":"S\u00edria","SO":"Som\u00e1lia","LK":"Sri Lanka","SD":"Sud\u00e3o","SS":"Sud\u00e3o do Sul","SE":"Su\u00e9cia","CH":"Su\u00ed\u00e7a","SR":"Suriname","SJ":"Svalbard e Jan Mayen","TJ":"Tadjiquist\u00e3o","TH":"Tail\u00e2ndia","TW":"Taiwan","TZ":"Tanz\u00e2nia","CZ":"Tch\u00e9quia","IO":"Territ\u00f3rio Brit\u00e2nico do Oceano \u00cdndico","TF":"Territ\u00f3rios Franceses do Sul","PS":"Territ\u00f3rios palestinos","TL":"Timor-Leste","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"Trinidad e Tobago","TN":"Tun\u00edsia","TM":"Turcomenist\u00e3o","TR":"Turquia","TV":"Tuvalu","UA":"Ucr\u00e2nia","UG":"Uganda","UY":"Uruguai","UZ":"Uzbequist\u00e3o","VU":"Vanuatu","VE":"Venezuela","VN":"Vietn\u00e3","WF":"Wallis e Futuna","ZM":"Z\u00e2mbia","ZW":"Zimb\u00e1bue"}

scripts/loadtest.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ const commandlineOptions = {
2525
maxRequests: 1,
2626
},
2727
// Heavy can saturate CPU which leads to requests stalling depending on machine
28-
// Keep an eye if --verbose logs pause, or if node CPU in top is > 100.
28+
// Keep an eye if --verbose logs pause, or if node CPU in top is > 100.
2929
// https://github.com/alexfernandez/loadtest#usage-donts
3030
heavy: {
3131
concurrency: 10,
@@ -51,7 +51,6 @@ const options = {
5151
const message = JSON.stringify(mockPageView());
5252
options.headers['Content-Length'] = message.length;
5353
options.headers['Content-Type'] = 'application/json';
54-
options.headers['user-agent'] = 'User-Agent: Mozilla/5.0 LoadTest';
5554
options.body = message;
5655
options.path = '/api/collect';
5756
const request = client(options, callback);
@@ -95,15 +94,14 @@ loadtest.loadTest(options, (error, results) => {
9594
if (results.errorCodes && Object.keys(results.errorCodes).length) {
9695
console.log(chalk.redBright('*'), chalk.red('Error Codes:'), results.errorCodes);
9796
}
98-
// console.log(results);
9997
});
10098

10199
/**
102-
* Create a new object for each request. Note, we could randomize values here if desired.
100+
* Create a new object for each request. Note, we could randomize values here if desired.
103101
*
104-
* TODO: Need a better way of passing in websiteId, hostname, URL.
102+
* TODO: Need a better way of passing in websiteId, hostname, URL.
105103
*
106-
* @param {object} payload pageview payload same as sent via tracker
104+
* @param {object} payload pageview payload same as sent via tracker
107105
*/
108106
function mockPageView(
109107
payload = {
@@ -121,6 +119,9 @@ function mockPageView(
121119

122120
// If you pass in --verbose, this function is called
123121
function statusCallback(error, result, latency) {
122+
if (error) {
123+
return console.error(chalk.redBright(error));
124+
}
124125
console.log(
125126
chalk.yellowBright(`\n## req #${result.requestIndex + 1} of ${latency.totalRequests}`),
126127
);

tracker/index.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ import { removeTrailingSlash } from '../lib/url';
133133
/* Handle history changes */
134134

135135
const handlePush = (state, title, url) => {
136+
if (!url) return;
137+
136138
removeEvents();
137139

138140
currentRef = currentUrl;
@@ -144,7 +146,9 @@ import { removeTrailingSlash } from '../lib/url';
144146
currentUrl = newUrl;
145147
}
146148

147-
trackView(currentUrl, currentRef);
149+
if (currentUrl !== currentRef) {
150+
trackView(currentUrl, currentRef);
151+
}
148152

149153
setTimeout(addEvents, 300);
150154
};

0 commit comments

Comments
 (0)