Skip to content

Commit 23be7c8

Browse files
Fixes #4 / Fixes #7 - sort by frequency / fit long messages into UI (#8)
1 parent 7e0d287 commit 23be7c8

File tree

4 files changed

+84
-51
lines changed

4 files changed

+84
-51
lines changed

index.js

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,33 @@ const helpers = require('./lib/applescript-helpers.js');
33

44
const input = (alfy.input || 'brian this is a message').split(' ');
55
const query = input[0];
6-
const message = input.slice(1, input.length).join(' ');
6+
const message = input.slice(1, input.length).join(' ').trim();
77

88
(async () => {
9-
let output = await helpers.buddySearch(query);
10-
if (!output) {
11-
return alfy.output([{
12-
title: `No results found for ${query}`,
13-
subtitle: 'Please try another query'
14-
}]);
15-
}
9+
let output = await helpers.buddySearch(query);
10+
if (!output) {
11+
return alfy.output([{
12+
title: `No results found for ${query}`,
13+
subtitle: 'Please try another query'
14+
}]);
15+
}
1616

17-
alfy.output(output.map(buddy => {
18-
return {
19-
title: buddy.name,
20-
subtitle: message ? `Send "${message}" to ${buddy.handle}` : `Type to send message to ${buddy.handle}`,
21-
arg: JSON.stringify({
22-
handle: buddy.handle,
23-
name: buddy.name,
24-
message
25-
})
26-
}
27-
}));
17+
alfy.output(output.map(buddy => {
18+
let displayMessage = message
19+
if (message.length > 60) {
20+
const first = message.slice(0, 20)
21+
const last = message.slice(message.length - 20, message.length)
22+
displayMessage = `${first}.............${last}`
23+
}
24+
25+
return {
26+
title: buddy.name,
27+
subtitle: message ? `Send "${displayMessage}" to ${buddy.handle}` : `Type to send message to ${buddy.handle}`,
28+
arg: JSON.stringify({
29+
handle: buddy.handle,
30+
name: buddy.name,
31+
message
32+
})
33+
}
34+
}));
2835
})()

info.plist

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,16 @@
4242
<key>disabled</key>
4343
<false/>
4444
<key>name</key>
45-
<string>messages</string>
45+
<string>Messages</string>
4646
<key>objects</key>
4747
<array>
4848
<dict>
4949
<key>config</key>
5050
<dict>
5151
<key>alfredfiltersresults</key>
5252
<false/>
53+
<key>argumenttrimmode</key>
54+
<integer>0</integer>
5355
<key>argumenttype</key>
5456
<integer>0</integer>
5557
<key>escaping</key>
@@ -88,27 +90,6 @@
8890
<key>version</key>
8991
<integer>2</integer>
9092
</dict>
91-
<dict>
92-
<key>config</key>
93-
<dict>
94-
<key>lastpathcomponent</key>
95-
<false/>
96-
<key>onlyshowifquerypopulated</key>
97-
<false/>
98-
<key>removeextension</key>
99-
<false/>
100-
<key>text</key>
101-
<string>{query}</string>
102-
<key>title</key>
103-
<string>Message Sent</string>
104-
</dict>
105-
<key>type</key>
106-
<string>alfred.workflow.output.notification</string>
107-
<key>uid</key>
108-
<string>5E7EC504-1A9C-438B-9E11-55D8A07B4918</string>
109-
<key>version</key>
110-
<integer>1</integer>
111-
</dict>
11293
<dict>
11394
<key>config</key>
11495
<dict>
@@ -132,6 +113,27 @@
132113
<key>version</key>
133114
<integer>2</integer>
134115
</dict>
116+
<dict>
117+
<key>config</key>
118+
<dict>
119+
<key>lastpathcomponent</key>
120+
<false/>
121+
<key>onlyshowifquerypopulated</key>
122+
<false/>
123+
<key>removeextension</key>
124+
<false/>
125+
<key>text</key>
126+
<string>{query}</string>
127+
<key>title</key>
128+
<string>Message Sent</string>
129+
</dict>
130+
<key>type</key>
131+
<string>alfred.workflow.output.notification</string>
132+
<key>uid</key>
133+
<string>5E7EC504-1A9C-438B-9E11-55D8A07B4918</string>
134+
<key>version</key>
135+
<integer>1</integer>
136+
</dict>
135137
</array>
136138
<key>readme</key>
137139
<string></string>

lib/applescript-helpers.js

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,19 @@ const Store = require('jfs');
55
const cacheVersion = require('../package.json').version;
66
const db = new Store('data', { pretty: true });
77

8-
function cleanupResults(results) {
9-
return _.chain(results)
8+
async function cleanupResults(results) {
9+
results = _.chain(results)
1010
.uniqBy(item => `${item.name} ${item.handle}`)
1111
.sortBy(r => r.handle)
12+
13+
resultsWithFreq = []
14+
for (let result of results) {
15+
result.frequency = await getFrequencyForHandle(result.handle)
16+
resultsWithFreq.push(result)
17+
}
18+
19+
resultsWithFreq.sort((r1, r2) => r2.frequency - r1.frequency)
20+
return resultsWithFreq
1221
}
1322

1423
async function getCachedData(key) {
@@ -21,33 +30,48 @@ async function getCachedData(key) {
2130
}
2231

2332
async function buddySearch(query) {
24-
const cacheKey = `${cacheVersion}:${query}`;
33+
const cacheID = `${cacheVersion}:${query}`;
2534

2635
return new Promise(async (resolve, reject) => {
27-
28-
const data = await getCachedData(cacheKey);
29-
if (data) resolve(cleanupResults(data));
36+
const data = await getCachedData(cacheID);
37+
if (data) { resolve(await cleanupResults(data)) }
3038

3139
osa.executeFile(
3240
'applescripts/buddy-search.scpt',
3341
{ searchQuery: query },
34-
(err, results, raw) => {
42+
async (err, results, raw) => {
3543
if (err) return resolve(null)
3644
if (!results.length) return resolve(null);
3745

38-
results = cleanupResults(results)
46+
results = await cleanupResults(results)
3947
resolve(results);
40-
db.save(cacheKey, results);
48+
db.save(cacheID, results);
4149
});
4250
})
4351
}
4452

4553
async function sendMessage(handle, message) {
54+
const cacheID = `${cacheVersion}:${handle}:frequency`;
55+
56+
const frequency = await getFrequencyForHandle(handle);
57+
db.save(cacheID, frequency + 1)
58+
4659
osa.executeFile('applescripts/send-message.scpt',
4760
{ theHandle: handle, textMessage: message },
4861
(err, results, raw) => {
4962
if (err) console.log(err);
5063
});
5164
}
5265

66+
function getFrequencyForHandle(handle) {
67+
const cacheID = `${cacheVersion}:${handle}:frequency`;
68+
69+
return new Promise((resolve, reject) => {
70+
db.get(cacheID, (err, data) => {
71+
if (err) resolve(0);
72+
resolve(data + 1)
73+
})
74+
})
75+
}
76+
5377
module.exports = { buddySearch, sendMessage }

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "alfred-messages",
3-
"version": "0.0.6",
3+
"version": "0.0.7",
44
"description": "Send messages through Alfred",
55
"license": "MIT",
66
"repository": "briangonzalez/alfred-messages",

0 commit comments

Comments
 (0)