diff --git a/marko/components/unknown-nick-list/component.js b/marko/components/unknown-nick-list/component.js
new file mode 100644
index 0000000..93459ff
--- /dev/null
+++ b/marko/components/unknown-nick-list/component.js
@@ -0,0 +1,17 @@
+const {charactersApi} = require("../../../rpdata/api/Character")
+
+module.exports = class {
+ onCreate() {
+ this.state = {
+ nicks: [],
+ }
+ }
+
+ onMount() {
+ charactersApi.unknownNicks(100).then(unknowns => {
+ this.state.nicks = unknowns.map(u => u.nick)
+ }).catch(err => {
+ console.warn("Failed to get unknown nicks:", err)
+ })
+ }
+}
\ No newline at end of file
diff --git a/marko/components/unknown-nick-list/index.marko b/marko/components/unknown-nick-list/index.marko
new file mode 100644
index 0000000..2d4bb7d
--- /dev/null
+++ b/marko/components/unknown-nick-list/index.marko
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/marko/components/unknown-nick-list/style.less b/marko/components/unknown-nick-list/style.less
new file mode 100644
index 0000000..9a8b31e
--- /dev/null
+++ b/marko/components/unknown-nick-list/style.less
@@ -0,0 +1,16 @@
+div.unknown-nick-list {
+ padding: 0.5em 0;
+
+ div.nick {
+ display: inline-block;
+ padding: 0.25em 0.5ch;
+ margin: 2px;
+ background-color: #111;
+ color: #881;
+ }
+ div.nick:hover {
+ cursor: pointer;
+ background-color: #222;
+ color: #CC2;
+ }
+}
\ No newline at end of file
diff --git a/marko/page/data/components/add-character-modal/component.js b/marko/page/data/components/add-character-modal/component.js
index 44c59ac..d6749b7 100644
--- a/marko/page/data/components/add-character-modal/component.js
+++ b/marko/page/data/components/add-character-modal/component.js
@@ -33,6 +33,14 @@ module.exports = class {
this.emit("close")
}
+ selectUnknown(nick) {
+ this.state.values = Object.assign({}, this.state.values, {
+ nick: nick,
+ name: nick.replace(/_/g, " ").replace(/`/g, "'"),
+ shortName: (!nick.includes("_") && nick.includes("`")) ? nick.split("`")[0] : "",
+ })
+ }
+
save() {
if (this.state.loading) {
return
diff --git a/marko/page/data/components/add-character-modal/index.marko b/marko/page/data/components/add-character-modal/index.marko
index c1808c5..0519695 100644
--- a/marko/page/data/components/add-character-modal/index.marko
+++ b/marko/page/data/components/add-character-modal/index.marko
@@ -21,4 +21,12 @@
+
+ Unknown Nicks
+ After you're done adding the one you're here for, why not take a look at the unknown nicks discovered in the last log character updates?
+ Clicking one will change the nick in the form above, and add a guess for what the full name is.
+
+ You don't have permission to set a different author on characters, so only add your own.
+
+
\ No newline at end of file
diff --git a/marko/page/data/components/character-nicks-modal/component.js b/marko/page/data/components/character-nicks-modal/component.js
index 9a6f4fa..d1fe32f 100644
--- a/marko/page/data/components/character-nicks-modal/component.js
+++ b/marko/page/data/components/character-nicks-modal/component.js
@@ -39,7 +39,24 @@ module.exports = class {
}).catch(errs => {
console.warn("Failed to add nick:", errs)
- this.state.error = "Failed to add nick: " + errs[0].message
+ this.state.error = errs[0].message
+ }).then(() => {
+ this.state.loading = false
+ })
+ }
+
+ selectUnknown(nick) {
+ if (this.state.loading) {
+ return
+ }
+
+ const input = {id: this.input.character.id, nick}
+
+ this.state.loading = true
+ charactersApi.addNick(input).then((res) => {
+ this.emit("nicks", res.nicks)
+ }).catch(errs => {
+ this.state.error = errs[0].message
}).then(() => {
this.state.loading = false
})
diff --git a/marko/page/data/components/character-nicks-modal/index.marko b/marko/page/data/components/character-nicks-modal/index.marko
index ef0b2cf..f7a6623 100644
--- a/marko/page/data/components/character-nicks-modal/index.marko
+++ b/marko/page/data/components/character-nicks-modal/index.marko
@@ -15,4 +15,7 @@
+ Unknown Nicks
+ These are the 100 most common nicks in the logs, maybe one of these belongs to ${input.character.name}?
+
\ No newline at end of file
diff --git a/rpdata/api/Character.js b/rpdata/api/Character.js
index 40c8e5d..dff73ab 100644
--- a/rpdata/api/Character.js
+++ b/rpdata/api/Character.js
@@ -190,6 +190,19 @@ class ChracterAPI {
return removeCharacter
})
}
+
+ unknownNicks(limit = 100) {
+ return query(`
+ query UnknownNicks($limit: Int!) {
+ unknownNicks(filter: {limit: $limit}) {
+ nick
+ score
+ }
+ }
+ `, {limit}).then(({unknownNicks}) => {
+ return unknownNicks
+ })
+ }
}
module.exports = { Character, charactersApi: new ChracterAPI }
\ No newline at end of file