i forgor
This commit is contained in:
82
main.go
82
main.go
@@ -75,7 +75,12 @@ var ProfileSelectionDone bool = false
|
|||||||
var ProfileSelectionProfile *HashbangProfile
|
var ProfileSelectionProfile *HashbangProfile
|
||||||
|
|
||||||
// The visibility that the post is going to be posted with
|
// The visibility that the post is going to be posted with
|
||||||
var PostVisibility string
|
var PostVisibility string = "public"
|
||||||
|
|
||||||
|
var ReplyIDEntry *widget.Entry
|
||||||
|
|
||||||
|
// The current page of the home timeline
|
||||||
|
var HomePage int = 1
|
||||||
|
|
||||||
// This function saves the config in memory to disk.
|
// This function saves the config in memory to disk.
|
||||||
func SaveConfigToDisk() error {
|
func SaveConfigToDisk() error {
|
||||||
@@ -262,15 +267,27 @@ func ProfileLaunch() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
for _, v := range Profiles {
|
for _, v := range Profiles {
|
||||||
|
ext := ""
|
||||||
|
btn := widget.NewButton("Log in", func() {
|
||||||
|
ProfileSelectionDone = true
|
||||||
|
ProfileSelectionProfile = v
|
||||||
|
MainWindow.Close()
|
||||||
|
})
|
||||||
|
|
||||||
|
if v.InternalName == LoadedConfig.ProfileName {
|
||||||
|
ext = "🚪 "
|
||||||
|
btn.Importance = widget.DangerImportance
|
||||||
|
} else {
|
||||||
|
btn.Importance = widget.HighImportance
|
||||||
|
}
|
||||||
|
|
||||||
|
btn.Text = ext + btn.Text
|
||||||
|
|
||||||
|
|
||||||
ProfileSelection.Add(
|
ProfileSelection.Add(
|
||||||
container.NewHBox(
|
container.NewHBox(
|
||||||
widget.NewLabel(v.Name),
|
widget.NewLabel(v.Name),
|
||||||
widget.NewButton("Log in", func() {
|
btn,
|
||||||
ProfileSelectionDone = true
|
|
||||||
ProfileSelectionProfile = v
|
|
||||||
MainWindow.Close()
|
|
||||||
}),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -396,20 +413,57 @@ func main() {
|
|||||||
App = app.New()
|
App = app.New()
|
||||||
MainWindow = App.NewWindow("Hashbang")
|
MainWindow = App.NewWindow("Hashbang")
|
||||||
TootEntry := widget.NewMultiLineEntry()
|
TootEntry := widget.NewMultiLineEntry()
|
||||||
ReplyIDEntry := widget.NewEntry()
|
ReplyIDEntry = widget.NewEntry()
|
||||||
ReplyIDLabel := widget.NewLabel("In reply to")
|
ReplyIDLabel := widget.NewLabel("In reply to")
|
||||||
ReplyBox := container.NewGridWithColumns(2, ReplyIDLabel, ReplyIDEntry)
|
ReplyBox := container.NewGridWithColumns(2, ReplyIDLabel, ReplyIDEntry)
|
||||||
|
|
||||||
Timeline := container.NewGridWithColumns(4)
|
Timeline := container.NewGridWithColumns(4)
|
||||||
|
PostTimeline := container.NewVBox(widget.NewLabel("Posts"))
|
||||||
|
|
||||||
VisibilitySelector := widget.NewSelect([]string{"public", "unlisted", "private", "direct"}, func(value string) {
|
VisibilitySelector := widget.NewSelect([]string{"public", "unlisted", "private", "direct"}, func(value string) {
|
||||||
PostVisibility = value
|
PostVisibility = value
|
||||||
})
|
})
|
||||||
|
|
||||||
|
VisibilitySelector.Selected = "public"
|
||||||
|
|
||||||
|
ShowTimeline := func() {
|
||||||
|
PostTimeline.RemoveAll()
|
||||||
|
pg := new(mastodon.Pagination)
|
||||||
|
posts, err := Client.GetTimelineHome(context.Background(), pg)
|
||||||
|
if err != nil {
|
||||||
|
PostTimeline.Objects[0] = widget.NewLabel(fmt.Sprintf("Error getting posts: %s", err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, status := range posts {
|
||||||
|
avatar_uri := status.Account.AvatarStatic
|
||||||
|
log.Println(avatar_uri)
|
||||||
|
u, err := storage.ParseURI(avatar_uri)
|
||||||
|
if err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
im := canvas.NewImageFromURI(u)
|
||||||
|
im.Resize(fyne.NewSize(25,25))
|
||||||
|
im.FillMode = canvas.ImageFillContain
|
||||||
|
lab := widget.NewLabel(fmt.Sprintf("%s: %s", status.Account.Username, html2text.HTML2Text(status.Content)))
|
||||||
|
lab.Selectable = true
|
||||||
|
actions := container.NewHBox()
|
||||||
|
actions.Add(widget.NewButton("Favorite", func() {}))
|
||||||
|
actions.Add(widget.NewButton("Boost", func() {}))
|
||||||
|
actions.Add(widget.NewButton("Reply", func() {
|
||||||
|
ReplyIDEntry.SetText(string(status.ID))
|
||||||
|
}))
|
||||||
|
actions.Add(widget.NewButton("Bookmark", func() {}))
|
||||||
|
lab.Wrapping = fyne.TextWrapWord
|
||||||
|
PostTimeline.Add(container.NewGridWithColumns(3, im, lab, actions))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ShowNotifications := func() {
|
ShowNotifications := func() {
|
||||||
Timeline.RemoveAll()
|
Timeline.RemoveAll()
|
||||||
pg := new(mastodon.Pagination)
|
pg := new(mastodon.Pagination)
|
||||||
//NewTimeline := container.NewVBox(widget.NewLabel("Notifications"))
|
|
||||||
notis, err := Client.GetNotifications(context.Background(), pg)
|
notis, err := Client.GetNotifications(context.Background(), pg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
Timeline.Objects[0] = widget.NewLabel(fmt.Sprintf("Error getting notifications: %s", err.Error()))
|
Timeline.Objects[0] = widget.NewLabel(fmt.Sprintf("Error getting notifications: %s", err.Error()))
|
||||||
@@ -428,7 +482,6 @@ func main() {
|
|||||||
} else {
|
} else {
|
||||||
label = widget.NewLabel("No content set")
|
label = widget.NewLabel("No content set")
|
||||||
}
|
}
|
||||||
//label.Truncation = fyne.TextTruncateClip
|
|
||||||
label.Wrapping = fyne.TextWrapWord
|
label.Wrapping = fyne.TextWrapWord
|
||||||
avatar_uri := v.Account.Avatar
|
avatar_uri := v.Account.Avatar
|
||||||
u, err := storage.ParseURI(avatar_uri)
|
u, err := storage.ParseURI(avatar_uri)
|
||||||
@@ -453,10 +506,15 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
go ShowNotifications()
|
go ShowNotifications()
|
||||||
|
go ShowTimeline()
|
||||||
|
|
||||||
RefreshNotis := widget.NewButton("Refresh", ShowNotifications)
|
RefreshAll := widget.NewButton("Refresh", func(){
|
||||||
|
ShowNotifications()
|
||||||
|
ShowTimeline()
|
||||||
|
})
|
||||||
|
|
||||||
MainWindow.SetContent(container.NewHSplit(container.NewVBox(TootEntry, ReplyBox, VisibilitySelector, widget.NewButton("Post", func() {
|
|
||||||
|
MainWindow.SetContent(container.NewVSplit(container.NewVScroll(PostTimeline), container.NewHSplit(container.NewVBox(TootEntry, ReplyBox, VisibilitySelector, widget.NewButton("Post", func() {
|
||||||
toot := mastodon.Toot{
|
toot := mastodon.Toot{
|
||||||
Status: TootEntry.Text,
|
Status: TootEntry.Text,
|
||||||
Visibility: PostVisibility,
|
Visibility: PostVisibility,
|
||||||
@@ -467,6 +525,6 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
dialog.ShowError(err, MainWindow)
|
dialog.ShowError(err, MainWindow)
|
||||||
}
|
}
|
||||||
}), RefreshNotis), container.NewVScroll(Timeline)))
|
}), RefreshAll), container.NewVScroll(Timeline))))
|
||||||
MainWindow.ShowAndRun()
|
MainWindow.ShowAndRun()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user