Compare commits
No commits in common. "main" and "0.9.9" have entirely different histories.
23 changed files with 15 additions and 447 deletions
|
|
@ -1,11 +0,0 @@
|
||||||
#DONE update theme
|
|
||||||
<!--
|
|
||||||
order:-10
|
|
||||||
completed:2025-02-10T17:02:46+11:00
|
|
||||||
archived:true
|
|
||||||
archivedAt:2025-02-10T17:02:46+11:00
|
|
||||||
originalPath:Components\ThemeDialog.razor
|
|
||||||
originalLine:76
|
|
||||||
-->
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
#DONE upload the profile pic
|
|
||||||
<!--
|
|
||||||
order:0
|
|
||||||
completed:2025-02-10T16:51:21+11:00
|
|
||||||
archived:true
|
|
||||||
archivedAt:2025-02-10T16:51:21+11:00
|
|
||||||
originalPath:Components\EditProfilePicDialog.razor
|
|
||||||
originalLine:60
|
|
||||||
-->
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,61 +0,0 @@
|
||||||
|
|
||||||
## Must Haves
|
|
||||||
- {check} View [latest statuslog entries](https://api.omg.lol/statuslog/latest)
|
|
||||||
- {check} View [all statuses of a single person](https://api.omg.lol/address/adam/statuses) (get [profile picture](https://profiles.cache.lol/adam/picture) and [statuslog bio](https://api.omg.lol/address/adam/statuses/bio)) Note: I'm calling this the profile page (even though omg.lol profile is a different thing)
|
|
||||||
- {check} [Log in](https://home.omg.lol/oauth/authorize?client_id=ea14dafd3e92cbcf93750c35cd81a031&scope=everything&redirect_uri=https://neatnik.net/adam/bucket/omgloloauth/&response_type=code) and [Authenticate](https://api.omg.lol/#token-get-oauth-exchange-an-authorization-code-for-an-access-token) (then [get all addresses](https://api.omg.lol/account/application/addresses) so we can pick one for other interactions)
|
|
||||||
- {check} Post a [new status](https://api.omg.lol/#token-post-statuslog-share-a-new-status) (checkbox for posting to mastodon)
|
|
||||||
- {check} Log out
|
|
||||||
- {check} Light/Dark themes (based on system theme)
|
|
||||||
|
|
||||||
## Should Haves
|
|
||||||
- {check} Share statuses, etc.
|
|
||||||
- {check} Have a character counter on statuses and a warning if going over length for posting to Mastodon.
|
|
||||||
- {check} Be a share target for creating statuses
|
|
||||||
- {check} View the [address directory](https://api.omg.lol/directory) (showing profile pics and linking to profile page)
|
|
||||||
- {check} Link to it via the account menu (There's not a lot of room in the nav)
|
|
||||||
- {check} View the [now garden](https://api.omg.lol/now/garden) (also, perhaps cache the now garden and link to the now page on a person's profile)
|
|
||||||
- {check} Updated profile page. Shows:
|
|
||||||
- {check} [profile picture](https://profiles.cache.lol/adam/picture)
|
|
||||||
- {check} [statuslog bio](https://api.omg.lol/address/adam/statuses/bio) text
|
|
||||||
- {check} [all statuses](https://api.omg.lol/address/adam/statuses)
|
|
||||||
- {check} Link to now page (if present in [now garden](https://api.omg.lol/now/garden))
|
|
||||||
- {check} Link to profile page (aka web page)
|
|
||||||
- {check} Link to person's some.pics
|
|
||||||
- {check} Link to person's pastebin
|
|
||||||
|
|
||||||
## Want to Haves
|
|
||||||
- {check} [Some.pics feed](https://api.omg.lol/pics) (plus seeing the some.pics of individuals, link on profile)
|
|
||||||
- {check} Be a share target for pictures
|
|
||||||
- {check} [Ephemeral feed](https://eph.emer.al/)
|
|
||||||
- {check} plus posting - ~~if/when an API becomes available~~ (Thanks Adam 😁)
|
|
||||||
- {check} Upload pics
|
|
||||||
- {check} Edit some.pics
|
|
||||||
- {check} delete pics
|
|
||||||
- {check} Edit statuses
|
|
||||||
- {check} delete statuses
|
|
||||||
- {check} Update / manage [now page](https://api.omg.lol/#now-page)
|
|
||||||
- {square} pull to refresh
|
|
||||||
- {check} Follow people (i.e. locally bookmark their statuslog profile)
|
|
||||||
- {check} A combined feed of all statuses and pics of everyone you're following
|
|
||||||
|
|
||||||
## Nice to Haves
|
|
||||||
- {check} Update profile picture
|
|
||||||
- {check} Update / manage statuslog bio
|
|
||||||
- {check} Update / manage [profile/web page](https://api.omg.lol/#web)
|
|
||||||
- {check} including [themes](https://api.omg.lol/#theme)
|
|
||||||
- {check} Update / manage [pastebin](https://api.omg.lol/#pastebin)
|
|
||||||
- {check} share and copy items
|
|
||||||
- {check} view as markup
|
|
||||||
- {check} visible in profile page
|
|
||||||
- {check} visible in feed
|
|
||||||
|
|
||||||
## Current Bugs
|
|
||||||
- {check} ~~Sharing to app multiple times throws an exception~~
|
|
||||||
- {check} ~~Need to update "Loading", "Logging in" and "nothing here" pages to match the splash screen (ish)~~
|
|
||||||
- {check} ~~Empty bio on person/statuses (just remove the div if the bio is empty)~~
|
|
||||||
- {check} ~~Need warnings on pics with no description~~
|
|
||||||
- {check} ~~respond appears on statuses with no external link~~
|
|
||||||
- {check} ~~statuses / pics don't refresh on update/delete~~
|
|
||||||
- {check} ~~own now page isn't showing properly in profile~~
|
|
||||||
- {check} ~~statuses with long words or urls won't wrap.~~
|
|
||||||
- {check} ~~Ephemeral scraping doesn't send a user agent string, so no longer works.~~
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
#DONE test
|
|
||||||
<!--
|
|
||||||
created:2025-02-10T20:44:27+11:00
|
|
||||||
order:-20
|
|
||||||
completed:2025-02-10T20:44:57+11:00
|
|
||||||
archived:true
|
|
||||||
archivedAt:2025-02-10T20:44:57+11:00
|
|
||||||
originalPath:backlog.md
|
|
||||||
originalLine:64
|
|
||||||
-->
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
const path = require('path')
|
|
||||||
|
|
||||||
module.exports = function () {
|
|
||||||
const project = this.project
|
|
||||||
return [
|
|
||||||
{
|
|
||||||
title: "Open in vscode", // This is what displays in the main menu
|
|
||||||
keys: ['alt+o'], // This is the keyboard shortcut
|
|
||||||
icon: "code", // This is the font awesome icon that displays in the main menu
|
|
||||||
action (task) {
|
|
||||||
const url = `vscode://file/${path.join(project.path, task.path)}:${task.line}`
|
|
||||||
project.openUrl(url)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
module.exports = function (task) {
|
|
||||||
const project = this.project
|
|
||||||
return []
|
|
||||||
}
|
|
||||||
|
|
@ -1,101 +0,0 @@
|
||||||
keepEmptyPriority: false
|
|
||||||
languages:
|
|
||||||
.razor:
|
|
||||||
name: razor
|
|
||||||
symbol: "//"
|
|
||||||
block:
|
|
||||||
start: "@*"
|
|
||||||
end: "*@"
|
|
||||||
ignore: "*"
|
|
||||||
code:
|
|
||||||
include_lists:
|
|
||||||
- TODO
|
|
||||||
- DOING
|
|
||||||
- DONE
|
|
||||||
- PLANNING
|
|
||||||
- FIXME
|
|
||||||
- ARCHIVE
|
|
||||||
- HACK
|
|
||||||
- CHANGED
|
|
||||||
- XXX
|
|
||||||
- IDEA
|
|
||||||
- NOTE
|
|
||||||
- REVIEW
|
|
||||||
- WAITING
|
|
||||||
lists:
|
|
||||||
- name: NOTE
|
|
||||||
hidden: false
|
|
||||||
id: 9886o1muwm6yiizyq
|
|
||||||
- name: Past Due Reminders
|
|
||||||
hidden: true
|
|
||||||
ignore: false
|
|
||||||
filter: 'remind = /./ and remind < "${now}" and list != DONE -remind'
|
|
||||||
id: 9886o1muwm6yiizyr
|
|
||||||
- name: What's Due?
|
|
||||||
hidden: true
|
|
||||||
ignore: false
|
|
||||||
filter: 'dueDate < "${in 15 days}" AND list != DONE +dueDate +order'
|
|
||||||
id: 9886o1muwm6yiizys
|
|
||||||
- name: WAITING
|
|
||||||
hidden: false
|
|
||||||
ignore: false
|
|
||||||
id: 9886o10uwm6yovnxl
|
|
||||||
- name: TODO
|
|
||||||
hidden: false
|
|
||||||
id: 9886o1muwm6yiizyt
|
|
||||||
- name: DOING
|
|
||||||
hidden: false
|
|
||||||
id: 9886o1muwm6yiizyu
|
|
||||||
- name: DONE
|
|
||||||
hidden: false
|
|
||||||
ignore: true
|
|
||||||
id: 9886o1muwm6yiizyv
|
|
||||||
- name: Recently Completed
|
|
||||||
filter: 'completedDate > "${14 days ago}" -completed'
|
|
||||||
hidden: false
|
|
||||||
id: 9886o1muwm6yiizyw
|
|
||||||
settings:
|
|
||||||
'0': object Object
|
|
||||||
openIn: default
|
|
||||||
openCodeIn: default
|
|
||||||
journalType: Single File
|
|
||||||
journalPath: null
|
|
||||||
appendNewCardsTo: backlog.md
|
|
||||||
newCardSyntax: MARKDOWN
|
|
||||||
replaceSpacesWith: '-'
|
|
||||||
plugins: {}
|
|
||||||
journalTemplate: null
|
|
||||||
markdownOnly: false
|
|
||||||
kudosProbability: 0.33
|
|
||||||
views: []
|
|
||||||
name: Neighbourhood.omg.lol
|
|
||||||
cards:
|
|
||||||
colors:
|
|
||||||
- color: red
|
|
||||||
filter: tags = "BUG"
|
|
||||||
- color: black
|
|
||||||
filter: tags = "Someday"
|
|
||||||
- color: green
|
|
||||||
filter: tags = "WantToHave"
|
|
||||||
template: |
|
|
||||||
|
|
||||||
<!--
|
|
||||||
created:${timestamp}
|
|
||||||
-->
|
|
||||||
trackChanges: false
|
|
||||||
metaNewLine: true
|
|
||||||
addCompletedMeta: true
|
|
||||||
addCheckBoxTasks: false
|
|
||||||
doneList: DONE
|
|
||||||
tokenPrefix: '#'
|
|
||||||
taskPrefix: ''
|
|
||||||
tagPrefix: '#'
|
|
||||||
metaSep: ':'
|
|
||||||
orderMeta: true
|
|
||||||
maxLines: 6
|
|
||||||
addNewCardsToTop: true
|
|
||||||
showTagsAndMeta: false
|
|
||||||
defaultList: TODO
|
|
||||||
computed: !<tag:yaml.org,2002:js/undefined> ''
|
|
||||||
archiveCompleted: true
|
|
||||||
archiveFolder: .imdone/DONE
|
|
||||||
|
|
@ -1,124 +0,0 @@
|
||||||
let updatedAt = new Date()
|
|
||||||
|
|
||||||
module.exports = function ({ line, source, totals }) {
|
|
||||||
const project = this.project
|
|
||||||
|
|
||||||
const emoji = {
|
|
||||||
due: dueEmoji(totals),
|
|
||||||
recent: recentEmoji(totals),
|
|
||||||
wip: wipEmoji(totals),
|
|
||||||
chart: EMOJI.CHART
|
|
||||||
}
|
|
||||||
|
|
||||||
// These are the properties that are available to use in your cards
|
|
||||||
// Use ${property_name} to permanently insert the value of the property
|
|
||||||
// Use {{property_name}} to insert the value of the property at runtime
|
|
||||||
return {
|
|
||||||
date: `${new Date().toISOString().substring(0, 10)}`,
|
|
||||||
sourceLink: `[${source.path}:${line}](${source.path}:${line})`,
|
|
||||||
cardTotal: cardTotal(totals),
|
|
||||||
allTopics: project.allTopics, // This is an array of all the topics in the project
|
|
||||||
topicTable: getTopicTable(project), // This is a markdown table with the count of tasks for each topic/list intersection
|
|
||||||
emoji,
|
|
||||||
icons
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const icons = {
|
|
||||||
filter: `<span class="icon is-small fa-xs"><svg aria-hidden="true" focusable="false" data-prefix="fa" data-icon="search" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="svg-inline--fa fa-search fa-w-16"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z" class=""></path></svg></span><span data-v-fd981bec="" class="icon is-small fa-xs"><svg aria-hidden="true" focusable="false" data-prefix="fa" data-icon="chevron-down" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" class="svg-inline--fa fa-chevron-down fa-w-14"><path fill="currentColor" d="M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z" class=""></path></svg></span>`
|
|
||||||
,openFile: `<span class="icon is-medium"><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true" class="octicon octicon-link"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></span>`
|
|
||||||
,kebab: `<span class="icon is-medium"><svg version="1.1" width="3" height="16" viewBox="0 0 3 16" aria-hidden="true" class="octicon octicon-kebab-vertical"><path data-v-5bf4cb66="" fill-rule="evenodd" d="M0 2.5a1.5 1.5 0 1 0 3 0 1.5 1.5 0 0 0-3 0zm0 5a1.5 1.5 0 1 0 3 0 1.5 1.5 0 0 0-3 0zM1.5 14a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z"></path></svg></span>`
|
|
||||||
,clone: `<span class="icon copy-button is-medium" style=""><svg aria-hidden="true" focusable="false" data-prefix="fa" data-icon="clone" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="svg-inline--fa fa-clone fa-w-16 fa-lg"><path fill="currentColor" d="M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z" class=""></path></svg></span>`
|
|
||||||
,editCard: `<span class="icon is-medium"><svg version="1.1" width="14" height="16" viewBox="0 0 14 16" aria-hidden="true" class="octicon octicon-pencil"><path fill-rule="evenodd" d="M0 12v3h3l8-8-3-3-8 8zm3 2H1v-2h1v1h1v1zm10.3-9.3L12 6 9 3l1.3-1.3a.996.996 0 0 1 1.41 0l1.59 1.59c.39.39.39 1.02 0 1.41z"></path></svg></span>`
|
|
||||||
}
|
|
||||||
|
|
||||||
const EMOJI = {
|
|
||||||
BAD: ':rotating_light:',
|
|
||||||
GREAT: ':rocket:',
|
|
||||||
SLEEP: ':sleeping:',
|
|
||||||
GOOD: ':2nd_place_medal:',
|
|
||||||
CHART: '<span style="font-size: 1.5em;">:chart:</span>'
|
|
||||||
}
|
|
||||||
|
|
||||||
function formatEmoji(emoji) {
|
|
||||||
return `<span style="font-size: 1.5em;">${emoji}</span>`
|
|
||||||
}
|
|
||||||
|
|
||||||
function dueEmoji(totals) {
|
|
||||||
const due = totals["What's Due?"]
|
|
||||||
let emoji = EMOJI.GOOD
|
|
||||||
if (due >= 3) {
|
|
||||||
emoji = EMOJI.BAD
|
|
||||||
} else if (due === 0) {
|
|
||||||
emoji = EMOJI.GREAT
|
|
||||||
}
|
|
||||||
return formatEmoji(emoji)
|
|
||||||
}
|
|
||||||
|
|
||||||
function recentEmoji(totals) {
|
|
||||||
const recentlyCompleted = totals['Recently Completed']
|
|
||||||
let emoji = EMOJI.GOOD
|
|
||||||
if (recentlyCompleted >= 3) {
|
|
||||||
emoji = EMOJI.GREAT
|
|
||||||
} else if (recentlyCompleted === 0) {
|
|
||||||
emoji = EMOJI.BAD
|
|
||||||
}
|
|
||||||
return formatEmoji(emoji)
|
|
||||||
}
|
|
||||||
|
|
||||||
function wipEmoji(totals) {
|
|
||||||
const doing = totals['DOING']
|
|
||||||
let emoji = EMOJI.GOOD
|
|
||||||
if (doing >= 3) {
|
|
||||||
emoji = EMOJI.BAD
|
|
||||||
} else if (doing === 0) {
|
|
||||||
emoji = EMOJI.SLEEP
|
|
||||||
} else if (doing === 1) {
|
|
||||||
emoji = EMOJI.GREAT
|
|
||||||
}
|
|
||||||
return formatEmoji(emoji)
|
|
||||||
}
|
|
||||||
|
|
||||||
function cardTotal(totals) {
|
|
||||||
let count = 0
|
|
||||||
Object.keys(totals).forEach((list) => {
|
|
||||||
count += totals[list]
|
|
||||||
})
|
|
||||||
return count
|
|
||||||
}
|
|
||||||
|
|
||||||
function getTopicTable(project) {
|
|
||||||
console.log('project.updatedAt', project.updatedAt)
|
|
||||||
console.log('updatedAt', updatedAt)
|
|
||||||
if (project.updatedAt < updatedAt) return ''
|
|
||||||
|
|
||||||
updatedAt = project.updatedAt
|
|
||||||
const lists = project.allLists.filter(list => !list.filter)
|
|
||||||
const topicTable = project.allTopics.map((topic) => {
|
|
||||||
return {
|
|
||||||
name: topic,
|
|
||||||
lists: [
|
|
||||||
...lists.map((list) => {
|
|
||||||
return {
|
|
||||||
name: list.name,
|
|
||||||
count: list.tasks.filter((task) => task.topics.includes(topic)).length
|
|
||||||
}
|
|
||||||
})
|
|
||||||
]
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
//convert topic table into a markdown table with topic name on the left and list names on the top and the count for each topic/list intersection
|
|
||||||
const table = `
|
|
||||||
| Topic | ${lists.map((list) => list.name).join(' | ')} |
|
|
||||||
| --- | ${lists.map(() => ' --- ').join(' | ')} |
|
|
||||||
${topicTable.map((topic) => {
|
|
||||||
const topicLink = `imdone://${project.path}?filter=topics="${encodeURIComponent(topic.name)}"`;
|
|
||||||
return `| [[${topic.name}]] | ${topic.lists.map((list) => `[${list.count}](${topicLink})`).join(' | ')} |`;
|
|
||||||
}).join('\n')}
|
|
||||||
`;
|
|
||||||
|
|
||||||
console.log(table);
|
|
||||||
return table
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
tags:
|
|
||||||
- BUG
|
|
||||||
- Someday
|
|
||||||
- WantToHave
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
.vs
|
|
||||||
bin
|
|
||||||
obj
|
|
||||||
*.user
|
|
||||||
.imdone
|
|
||||||
Resources
|
|
||||||
.git
|
|
||||||
.vscode
|
|
||||||
|
|
@ -124,7 +124,6 @@
|
||||||
Content = string.Empty;
|
Content = string.Empty;
|
||||||
Listed = false;
|
Listed = false;
|
||||||
confirmDelete = false;
|
confirmDelete = false;
|
||||||
loading = false;
|
|
||||||
await InvokeAsync(StateHasChanged);
|
await InvokeAsync(StateHasChanged);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -57,8 +57,11 @@
|
||||||
loading = true;
|
loading = true;
|
||||||
await InvokeAsync(StateHasChanged);
|
await InvokeAsync(StateHasChanged);
|
||||||
|
|
||||||
|
//TODO: upload the profile pic
|
||||||
|
//PutPicResponseData? response = await api.PutPic(State.SelectedAddressName!, Base64File!);
|
||||||
if (Base64File != null && File != null)
|
if (Base64File != null && File != null)
|
||||||
{
|
{
|
||||||
|
// using var fileStream = await File.OpenReadAsync();
|
||||||
BasicResponseData? response = await api.PostProfilePic(Address!, File);
|
BasicResponseData? response = await api.PostProfilePic(Address!, File);
|
||||||
if (response != null)
|
if (response != null)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,7 @@
|
||||||
@inject IJSRuntime JS
|
@inject IJSRuntime JS
|
||||||
|
|
||||||
<article class="paste">
|
<article class="paste">
|
||||||
@* TODO link to paste view
|
@* TODO: link to paste view *@
|
||||||
* <!--
|
|
||||||
* order:-178.75
|
|
||||||
* -->
|
|
||||||
*@
|
|
||||||
|
|
||||||
<nav>
|
<nav>
|
||||||
<h5 class="mono"><a href="/pastes/tbc">@Paste.Title</a></h5>
|
<h5 class="mono"><a href="/pastes/tbc">@Paste.Title</a></h5>
|
||||||
<div class="max"></div>
|
<div class="max"></div>
|
||||||
|
|
|
||||||
|
|
@ -22,10 +22,7 @@
|
||||||
|
|
||||||
private List<Pic>? pics;
|
private List<Pic>? pics;
|
||||||
|
|
||||||
//TODO There is a noticable rendering delay between the pics loading and the page rendering
|
// TODO: There is a noticable rendering delay between the pics loading and the page rendering
|
||||||
// <!--
|
|
||||||
// order:-145
|
|
||||||
// -->
|
|
||||||
protected override async Task OnInitializedAsync() {
|
protected override async Task OnInitializedAsync() {
|
||||||
await base.OnInitializedAsync();
|
await base.OnInitializedAsync();
|
||||||
if (PicsFunc == null) return;
|
if (PicsFunc == null) return;
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task UseTheme() {
|
public async Task UseTheme() {
|
||||||
|
// todo: update theme
|
||||||
onthemechanged?.Invoke(activeTheme);
|
onthemechanged?.Invoke(activeTheme);
|
||||||
activeTheme = null;
|
activeTheme = null;
|
||||||
await InvokeAsync(StateHasChanged);
|
await InvokeAsync(StateHasChanged);
|
||||||
|
|
|
||||||
|
|
@ -4,5 +4,6 @@
|
||||||
public string Email { get; set; } = string.Empty;
|
public string Email { get; set; } = string.Empty;
|
||||||
public string Name { get; set; } = string.Empty;
|
public string Name { get; set; } = string.Empty;
|
||||||
public TimeData Created { get; set; } = TimeData.Empty;
|
public TimeData Created { get; set; } = TimeData.Empty;
|
||||||
|
//TODO: api_key and settings
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -138,7 +138,7 @@
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="8.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.Maui.Essentials" Version="8.0.70" />
|
<PackageReference Include="Microsoft.Maui.Essentials" Version="8.0.70" />
|
||||||
<PackageReference Include="PSC.Blazor.Components.MarkdownEditor" Version="8.0.4" />
|
<PackageReference Include="PSC.Blazor.Components.MarkdownEditor" Version="8.0.4" />
|
||||||
<PackageReference Include="System.Text.Json" Version="8.0.5" />
|
<PackageReference Include="System.Text.Json" Version="8.0.4" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
||||||
|
|
@ -56,15 +56,11 @@ namespace Neighbourhood.omg.lol {
|
||||||
}
|
}
|
||||||
else if (intent.Type.Equals(Intent.ActionSendMultiple)) //Multiple files
|
else if (intent.Type.Equals(Intent.ActionSendMultiple)) //Multiple files
|
||||||
{
|
{
|
||||||
//NOTE we don't really support recieving multiple files from a share request at the moment.
|
// TODO: we don't really support this at the moment.
|
||||||
// <!--
|
//System.Collections.IList? uriList;
|
||||||
// order:0
|
//if (OperatingSystem.IsAndroidVersionAtLeast(33))
|
||||||
// -->
|
|
||||||
|
|
||||||
// System.Collections.IList? uriList;
|
|
||||||
// if (OperatingSystem.IsAndroidVersionAtLeast(33))
|
|
||||||
// uriList = intent.GetParcelableArrayListExtra(Intent.ExtraStream, Java.Lang.Class.FromType(typeof(Android.Net.Uri)));
|
// uriList = intent.GetParcelableArrayListExtra(Intent.ExtraStream, Java.Lang.Class.FromType(typeof(Android.Net.Uri)));
|
||||||
// else uriList = intent.GetParcelableArrayListExtra(Intent.ExtraStream);
|
//else uriList = intent.GetParcelableArrayListExtra(Intent.ExtraStream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
63
backlog.md
63
backlog.md
|
|
@ -1,63 +0,0 @@
|
||||||
- [Pull to refresh #WantToHave](#TODO:)
|
|
||||||
<!--
|
|
||||||
order:-177.5
|
|
||||||
-->
|
|
||||||
- [Be a share target for pastes? #WantToHave](#TODO:)
|
|
||||||
<!--
|
|
||||||
order:-171.25
|
|
||||||
-->
|
|
||||||
- [Update / manage [PURLs](https://api.omg.lol/#purls) #WantToHave](#TODO:)
|
|
||||||
<!--
|
|
||||||
order:-172.5
|
|
||||||
-->
|
|
||||||
- [Combined status / pics posting (upload pic in new status dialog and paste in link) #WantToHave](#TODO:)
|
|
||||||
<!--
|
|
||||||
order:-171.875
|
|
||||||
-->
|
|
||||||
- [Update / manage [Weblog](https://api.omg.lol/#weblog) (should probably wait for [Neato](https://neato.pub/)) #WantToHave](#WAITING:)
|
|
||||||
<!--
|
|
||||||
order:0
|
|
||||||
-->
|
|
||||||
|
|
||||||
- [Account settings #Someday](#TODO:)
|
|
||||||
<!--
|
|
||||||
order:-80
|
|
||||||
-->
|
|
||||||
- [Address preferences #Someday](#TODO:)
|
|
||||||
<!--
|
|
||||||
order:-90
|
|
||||||
-->
|
|
||||||
- [DNS Records #Someday](#TODO:)
|
|
||||||
<!--
|
|
||||||
order:-100
|
|
||||||
-->
|
|
||||||
- [Switchboard #Someday](#TODO:)
|
|
||||||
<!--
|
|
||||||
order:-110
|
|
||||||
-->
|
|
||||||
- [Email forwarding #Someday](#TODO:)
|
|
||||||
<!--
|
|
||||||
order:-120
|
|
||||||
-->
|
|
||||||
- [Keys #Someday](#TODO:)
|
|
||||||
<!--
|
|
||||||
order:-130
|
|
||||||
-->
|
|
||||||
- [Proofs #Someday](#TODO:)
|
|
||||||
<!--
|
|
||||||
order:-140
|
|
||||||
-->
|
|
||||||
|
|
||||||
- [Slow rendering, especially pics, due to large amount of data #BUG](#TODO:)
|
|
||||||
<!--
|
|
||||||
order:-150
|
|
||||||
-->
|
|
||||||
- [Sharing to app while the sharing page is already open does literally nothing #BUG](#TODO:)
|
|
||||||
- Not an issue? Only an issue when you have the app and the sharing app open side-by-side, which is rare?
|
|
||||||
<!--
|
|
||||||
order:-160
|
|
||||||
-->
|
|
||||||
- [Can't select svgs as pics. #BUG](#TODO:)
|
|
||||||
<!--
|
|
||||||
order:-170
|
|
||||||
-->
|
|
||||||
|
|
@ -38,6 +38,7 @@
|
||||||
position: sticky;
|
position: sticky;
|
||||||
top: 0;
|
top: 0;
|
||||||
height: env(safe-area-inset-top);
|
height: env(safe-area-inset-top);
|
||||||
|
background-color: #f7f7f7;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,14 +12,6 @@
|
||||||
--max-article-size: 75rem;
|
--max-article-size: 75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
#app {
|
|
||||||
position: relative
|
|
||||||
}
|
|
||||||
|
|
||||||
nav:is(.left, .right){
|
|
||||||
margin-block-start: env(safe-area-inset-top);
|
|
||||||
}
|
|
||||||
|
|
||||||
main {
|
main {
|
||||||
position: relative;
|
position: relative;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
|
|
@ -251,4 +243,4 @@ a.row.indent { margin-left: 1rem }
|
||||||
|
|
||||||
.markdown-editor > .EasyMDEContainer > .CodeMirror {
|
.markdown-editor > .EasyMDEContainer > .CodeMirror {
|
||||||
flex: auto
|
flex: auto
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,7 @@ nav header { z-index: 101 }
|
||||||
|
|
||||||
nav.bottom.s:not(.drawer) :is(button,.button) > menu { z-index: 100 }
|
nav.bottom.s:not(.drawer) :is(button,.button) > menu { z-index: 100 }
|
||||||
|
|
||||||
.fab {
|
.fab { z-index: 1 }
|
||||||
z-index: 1
|
|
||||||
}
|
|
||||||
|
|
||||||
.avatar::after { z-index: 1 }
|
.avatar::after { z-index: 1 }
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue