+4
index.html
+4
index.html
···
201
201
202
202
<div class="lycan-import">
203
203
<form>
204
+
<h4>Data not imported yet</h4>
205
+
204
206
<p>
205
207
In order to search within your likes and bookmarks, the posts you've liked or saved need to be imported into a database.
206
208
This is a one-time process, but it can take several minutes or more, depending on the age of your account.
···
215
217
</form>
216
218
217
219
<div class="import-progress">
220
+
<h4>Import in progress</h4>
221
+
218
222
<p class="import-status"></p>
219
223
<p><progress></progress> <output></output></p>
220
224
</div>
+14
-6
private_search_page.js
+14
-6
private_search_page.js
···
42
42
43
43
let params = new URLSearchParams(location.search);
44
44
this.mode = params.get('mode');
45
-
this.lycanMode = params.get('lycan');
45
+
let lycan = params.get('lycan');
46
46
47
-
if (this.lycanMode == 'local') {
47
+
if (lycan == 'local') {
48
48
this.localLycan = new BlueskyAPI('http://localhost:3000', false);
49
+
} else if (lycan) {
50
+
this.lycanAddress = `did:web:${lycan}#lycan`;
51
+
} else {
52
+
this.lycanAddress = 'did:web:lycan.feeds.blue#lycan';
49
53
}
50
54
}
51
55
···
136
140
return await this.localLycan.getRequest('blue.feeds.lycan.getImportStatus', { user: accountAPI.user.did });
137
141
} else {
138
142
return await accountAPI.getRequest('blue.feeds.lycan.getImportStatus', null, {
139
-
headers: { 'atproto-proxy': 'did:web:lycan.feeds.blue#lycan' }
143
+
headers: { 'atproto-proxy': this.lycanAddress }
140
144
});
141
145
}
142
146
}
···
157
161
this.lycanImportSection.style.display = 'block';
158
162
this.lycanImportForm.style.display = 'block';
159
163
this.importProgress.style.display = 'none';
164
+
this.searchField.disabled = true;
160
165
161
166
this.stopImportTimer();
162
167
} else if (info.status == 'in_progress' || info.status == 'scheduled' || info.status == 'requested') {
163
168
this.lycanImportSection.style.display = 'block';
164
169
this.lycanImportForm.style.display = 'none';
165
170
this.importProgress.style.display = 'block';
171
+
this.searchField.disabled = true;
166
172
167
173
this.showImportProgress(info);
168
174
this.startImportTimer();
169
175
} else if (info.status == 'finished') {
170
176
this.lycanImportForm.style.display = 'none';
171
177
this.importProgress.style.display = 'block';
178
+
this.searchField.disabled = false;
172
179
173
180
this.showImportProgress({ status: 'finished', progress: 1.0 });
174
181
this.stopImportTimer();
···
192
199
this.importStatusLabel.innerText = `Import complete ✓`;
193
200
} else if (info.position) {
194
201
let date = new Date(info.position).toLocaleString(window.dateLocale, { day: 'numeric', month: 'short', year: 'numeric' });
195
-
this.importStatusLabel.innerText = `Imported data until: ${date}`;
202
+
this.importStatusLabel.innerText = `Downloaded data until: ${date}`;
196
203
} else if (info.status == 'requested') {
197
204
this.importStatusLabel.innerText = 'Requesting import…';
198
205
} else {
···
206
213
this.lycanImportSection.style.display = 'block';
207
214
this.lycanImportForm.style.display = 'none';
208
215
this.importProgress.style.display = 'block';
216
+
this.searchField.disabled = true;
209
217
210
218
this.importStatusLabel.innerText = message;
211
219
this.stopImportTimer();
···
240
248
});
241
249
} else {
242
250
await accountAPI.postRequest('blue.feeds.lycan.startImport', null, {
243
-
headers: { 'atproto-proxy': 'did:web:lycan.feeds.blue#lycan' }
251
+
headers: { 'atproto-proxy': this.lycanAddress }
244
252
});
245
253
}
246
254
···
354
362
if (cursor) params.cursor = cursor;
355
363
356
364
response = await accountAPI.getRequest('blue.feeds.lycan.searchPosts', params, {
357
-
headers: { 'atproto-proxy': 'did:web:lycan.feeds.blue#lycan' }
365
+
headers: { 'atproto-proxy': this.lycanAddress }
358
366
});
359
367
}
360
368