aboutsummaryrefslogtreecommitdiff
path: root/internal/ui/integration_show.go
blob: abde534812e0ff9228e4010444591775ccad7903 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
// SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

package ui // import "miniflux.app/v2/internal/ui"

import (
	"net/http"

	"miniflux.app/v2/internal/config"
	"miniflux.app/v2/internal/http/request"
	"miniflux.app/v2/internal/http/response/html"
	"miniflux.app/v2/internal/ui/form"
	"miniflux.app/v2/internal/ui/session"
	"miniflux.app/v2/internal/ui/view"
)

func (h *handler) showIntegrationPage(w http.ResponseWriter, r *http.Request) {
	user, err := h.store.UserByID(request.UserID(r))
	if err != nil {
		html.ServerError(w, r, err)
		return
	}

	integration, err := h.store.Integration(user.ID)
	if err != nil {
		html.ServerError(w, r, err)
		return
	}

	integrationForm := form.IntegrationForm{
		PinboardEnabled:      integration.PinboardEnabled,
		PinboardToken:        integration.PinboardToken,
		PinboardTags:         integration.PinboardTags,
		PinboardMarkAsUnread: integration.PinboardMarkAsUnread,
		InstapaperEnabled:    integration.InstapaperEnabled,
		InstapaperUsername:   integration.InstapaperUsername,
		InstapaperPassword:   integration.InstapaperPassword,
		FeverEnabled:         integration.FeverEnabled,
		FeverUsername:        integration.FeverUsername,
		GoogleReaderEnabled:  integration.GoogleReaderEnabled,
		GoogleReaderUsername: integration.GoogleReaderUsername,
		WallabagEnabled:      integration.WallabagEnabled,
		WallabagOnlyURL:      integration.WallabagOnlyURL,
		WallabagURL:          integration.WallabagURL,
		WallabagClientID:     integration.WallabagClientID,
		WallabagClientSecret: integration.WallabagClientSecret,
		WallabagUsername:     integration.WallabagUsername,
		WallabagPassword:     integration.WallabagPassword,
		NotionEnabled:        integration.NotionEnabled,
		NotionPageID:         integration.NotionPageID,
		NotionToken:          integration.NotionToken,
		NunuxKeeperEnabled:   integration.NunuxKeeperEnabled,
		NunuxKeeperURL:       integration.NunuxKeeperURL,
		NunuxKeeperAPIKey:    integration.NunuxKeeperAPIKey,
		EspialEnabled:        integration.EspialEnabled,
		EspialURL:            integration.EspialURL,
		EspialAPIKey:         integration.EspialAPIKey,
		EspialTags:           integration.EspialTags,
		ReadwiseEnabled:      integration.ReadwiseEnabled,
		ReadwiseAPIKey:       integration.ReadwiseAPIKey,
		PocketEnabled:        integration.PocketEnabled,
		PocketAccessToken:    integration.PocketAccessToken,
		PocketConsumerKey:    integration.PocketConsumerKey,
		TelegramBotEnabled:   integration.TelegramBotEnabled,
		TelegramBotToken:     integration.TelegramBotToken,
		TelegramBotChatID:    integration.TelegramBotChatID,
		LinkdingEnabled:      integration.LinkdingEnabled,
		LinkdingURL:          integration.LinkdingURL,
		LinkdingAPIKey:       integration.LinkdingAPIKey,
		LinkdingTags:         integration.LinkdingTags,
		LinkdingMarkAsUnread: integration.LinkdingMarkAsUnread,
		MatrixBotEnabled:     integration.MatrixBotEnabled,
		MatrixBotUser:        integration.MatrixBotUser,
		MatrixBotPassword:    integration.MatrixBotPassword,
		MatrixBotURL:         integration.MatrixBotURL,
		MatrixBotChatID:      integration.MatrixBotChatID,
		AppriseEnabled:       integration.AppriseEnabled,
		AppriseURL:           integration.AppriseURL,
		AppriseServicesURL:   integration.AppriseServicesURL,
		ShioriEnabled:        integration.ShioriEnabled,
		ShioriURL:            integration.ShioriURL,
		ShioriUsername:       integration.ShioriUsername,
		ShioriPassword:       integration.ShioriPassword,
		ShaarliEnabled:       integration.ShaarliEnabled,
		ShaarliURL:           integration.ShaarliURL,
		ShaarliAPISecret:     integration.ShaarliAPISecret,
		WebhookEnabled:       integration.WebhookEnabled,
		WebhookURL:           integration.WebhookURL,
		WebhookSecret:        integration.WebhookSecret,
	}

	sess := session.New(h.store, request.SessionID(r))
	view := view.New(h.tpl, r, sess)
	view.Set("form", integrationForm)
	view.Set("menu", "settings")
	view.Set("user", user)
	view.Set("countUnread", h.store.CountUnreadEntries(user.ID))
	view.Set("countErrorFeeds", h.store.CountUserFeedsWithErrors(user.ID))
	view.Set("hasPocketConsumerKeyConfigured", config.Opts.PocketConsumerKey("") != "")

	html.OK(w, r, view.Render("integrations"))
}