Skip to content

Commit

Permalink
add types to exported starr methods (#194)
Browse files Browse the repository at this point in the history
  • Loading branch information
davidnewhall committed Jun 13, 2024
2 parents e3eb09a + 51020c4 commit 66ba7f2
Show file tree
Hide file tree
Showing 10 changed files with 106 additions and 94 deletions.
2 changes: 1 addition & 1 deletion frontend/src/Starr/Actions/fragments/footer.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
async (err: string) => await showError(idx, err)
)
} else {
await update[tab.id][instance.App](instance, force, form[idx]).then(
await update[tab.id][instance.App](instance, form[idx], force).then(
async (resp: any) => {
goodMsg += `<li>${$_("instances.SuccessMsg", {values:{"msg": resp.Msg}})}</li>`
form[idx] = JSON.parse(JSON.stringify(resp.Data))
Expand Down
15 changes: 8 additions & 7 deletions frontend/src/Starr/Actions/methods.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,8 @@ import {
AddWhisparrQualityProfile,
ImportQualityProfiles,
ExportQualityProfiles,
} from "/wailsjs/go/starrs/Starrs"
} from "../../../wailsjs/go/starrs/Starrs"
import type { Instance } from "../../libs/config"

export function fixFieldValues(info: {[key: string]: any}): string {
info.forEach((item, idx) => {
Expand All @@ -99,7 +100,7 @@ export function fixFieldValues(info: {[key: string]: any}): string {
return JSON.stringify(info)
}

export const remove: {[key: string]: {[key: string]: (...args: any[]) => Promise<any>;}} = {
export const remove: {[key: string]: {[key: string]: (Instance, number) => Promise<any>;}} = {
"BlockLists": {
"Lidarr": DeleteBlockList,
"Prowlarr": DeleteBlockList,
Expand Down Expand Up @@ -149,7 +150,7 @@ export const remove: {[key: string]: {[key: string]: (...args: any[]) => Promise
}
}

export const update: {[key: string]: {[key: string]: (...args: any[]) => Promise<any>;}} = {
export const update: {[key: string]: {[key: string]: (Instance, any, boolean?) => Promise<any>;}} = {
"DownloadClients": {
"Lidarr": UpdateLidarrDownloadClient,
"Prowlarr": UpdateProwlarrDownloadClient,
Expand Down Expand Up @@ -189,7 +190,7 @@ export const update: {[key: string]: {[key: string]: (...args: any[]) => Promise
},
}

export const test: {[key: string]: {[key: string]: (...args: any[]) => Promise<string>;}} = {
export const test: {[key: string]: {[key: string]: (Instance, any) => Promise<string>;}} = {
"DownloadClients": {
"Lidarr": TestLidarrDownloadClient,
"Prowlarr": TestProwlarrDownloadClient,
Expand All @@ -215,23 +216,23 @@ export const test: {[key: string]: {[key: string]: (...args: any[]) => Promise<
},
}

export const exportFile: {[key: string]: (...args: any[]) => Promise<any>;} = {
export const exportFile: {[key: string]: (Instance, any) => Promise<any>;} = {
"DownloadClients": ExportDownloadClients,
"Indexers": ExportIndexer,
"ImportLists": ExportImportLists,
"Exclusions": ExportExclusions,
"QualityProfiles": ExportQualityProfiles,
}

export const importFile: {[key: string]: (...args: any[]) => Promise<any>;} = {
export const importFile: {[key: string]: (Instance) => Promise<any>;} = {
"DownloadClients": ImportDownloadClients,
"Indexers": ImportIndexer,
"ImportLists": ImportImportLists,
"Exclusions": ImportExclusions,
"QualityProfiles": ImportQualityProfiles,
}

export const add: {[key: string]: {[key: string]: (...args: any[]) => Promise<string>;}} = {
export const add: {[key: string]: {[key: string]: (Instance, any) => Promise<string>;}} = {
"DownloadClients": {
"Lidarr": AddLidarrDownloadClient,
"Prowlarr": AddProwlarrDownloadClient,
Expand Down
32 changes: 16 additions & 16 deletions frontend/wailsjs/go/starrs/Starrs.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -157,60 +157,60 @@ export function TestWhisparrIndexer(arg1:starrs.AppConfig,arg2:sonarr.IndexerInp

export function UpdateInvalidItems(arg1:starrs.AppConfig,arg2:string,arg3:string,arg4:{[key: number]: boolean}):Promise<starrs.RootFolders>;

export function UpdateLidarrDownloadClient(arg1:starrs.AppConfig,arg2:boolean,arg3:lidarr.DownloadClientInput):Promise<starrs.DataReply>;
export function UpdateLidarrDownloadClient(arg1:starrs.AppConfig,arg2:lidarr.DownloadClientInput,arg3:boolean):Promise<starrs.DataReply>;

export function UpdateLidarrExclusion(arg1:starrs.AppConfig,arg2:lidarr.Exclusion):Promise<starrs.DataReply>;

export function UpdateLidarrImportList(arg1:starrs.AppConfig,arg2:boolean,arg3:lidarr.ImportListInput):Promise<starrs.DataReply>;

export function UpdateLidarrIndexer(arg1:starrs.AppConfig,arg2:boolean,arg3:lidarr.IndexerInput):Promise<starrs.DataReply>;
export function UpdateLidarrIndexer(arg1:starrs.AppConfig,arg2:lidarr.IndexerInput,arg3:boolean):Promise<starrs.DataReply>;

export function UpdateLidarrQualityProfile(arg1:starrs.AppConfig,arg2:lidarr.QualityProfile):Promise<starrs.DataReply>;

export function UpdateProwlarrDownloadClient(arg1:starrs.AppConfig,arg2:boolean,arg3:prowlarr.DownloadClientInput):Promise<starrs.DataReply>;
export function UpdateProwlarrDownloadClient(arg1:starrs.AppConfig,arg2:prowlarr.DownloadClientInput,arg3:boolean):Promise<starrs.DataReply>;

export function UpdateProwlarrIndexer(arg1:starrs.AppConfig,arg2:boolean,arg3:prowlarr.IndexerInput):Promise<starrs.DataReply>;
export function UpdateProwlarrIndexer(arg1:starrs.AppConfig,arg2:prowlarr.IndexerInput,arg3:boolean):Promise<starrs.DataReply>;

export function UpdateRadarrDownloadClient(arg1:starrs.AppConfig,arg2:boolean,arg3:radarr.DownloadClientInput):Promise<starrs.DataReply>;
export function UpdateRadarrDownloadClient(arg1:starrs.AppConfig,arg2:radarr.DownloadClientInput,arg3:boolean):Promise<starrs.DataReply>;

export function UpdateRadarrExclusion(arg1:starrs.AppConfig,arg2:radarr.Exclusion):Promise<starrs.DataReply>;

export function UpdateRadarrImportList(arg1:starrs.AppConfig,arg2:boolean,arg3:radarr.ImportListInput):Promise<starrs.DataReply>;
export function UpdateRadarrImportList(arg1:starrs.AppConfig,arg2:radarr.ImportListInput,arg3:boolean):Promise<starrs.DataReply>;

export function UpdateRadarrIndexer(arg1:starrs.AppConfig,arg2:boolean,arg3:radarr.IndexerInput):Promise<starrs.DataReply>;
export function UpdateRadarrIndexer(arg1:starrs.AppConfig,arg2:radarr.IndexerInput,arg3:boolean):Promise<starrs.DataReply>;

export function UpdateRadarrQualityProfile(arg1:starrs.AppConfig,arg2:radarr.QualityProfile):Promise<starrs.DataReply>;

export function UpdateReadarrDownloadClient(arg1:starrs.AppConfig,arg2:boolean,arg3:readarr.DownloadClientInput):Promise<starrs.DataReply>;
export function UpdateReadarrDownloadClient(arg1:starrs.AppConfig,arg2:readarr.DownloadClientInput,arg3:boolean):Promise<starrs.DataReply>;

export function UpdateReadarrExclusion(arg1:starrs.AppConfig,arg2:readarr.Exclusion):Promise<starrs.DataReply>;

export function UpdateReadarrImportList(arg1:starrs.AppConfig,arg2:boolean,arg3:readarr.ImportListInput):Promise<starrs.DataReply>;
export function UpdateReadarrImportList(arg1:starrs.AppConfig,arg2:readarr.ImportListInput,arg3:boolean):Promise<starrs.DataReply>;

export function UpdateReadarrIndexer(arg1:starrs.AppConfig,arg2:boolean,arg3:readarr.IndexerInput):Promise<starrs.DataReply>;
export function UpdateReadarrIndexer(arg1:starrs.AppConfig,arg2:readarr.IndexerInput,arg3:boolean):Promise<starrs.DataReply>;

export function UpdateReadarrQualityProfile(arg1:starrs.AppConfig,arg2:readarr.QualityProfile):Promise<starrs.DataReply>;

export function UpdateRecycleBin(arg1:starrs.AppConfig,arg2:string):Promise<starrs.RootFolders>;

export function UpdateRootFolder(arg1:starrs.AppConfig,arg2:string,arg3:string):Promise<starrs.RootFolders>;

export function UpdateSonarrDownloadClient(arg1:starrs.AppConfig,arg2:boolean,arg3:sonarr.DownloadClientInput):Promise<starrs.DataReply>;
export function UpdateSonarrDownloadClient(arg1:starrs.AppConfig,arg2:sonarr.DownloadClientInput,arg3:boolean):Promise<starrs.DataReply>;

export function UpdateSonarrExclusion(arg1:starrs.AppConfig,arg2:sonarr.Exclusion):Promise<starrs.DataReply>;

export function UpdateSonarrImportList(arg1:starrs.AppConfig,arg2:boolean,arg3:sonarr.ImportListInput):Promise<starrs.DataReply>;
export function UpdateSonarrImportList(arg1:starrs.AppConfig,arg2:sonarr.ImportListInput,arg3:boolean):Promise<starrs.DataReply>;

export function UpdateSonarrIndexer(arg1:starrs.AppConfig,arg2:boolean,arg3:sonarr.IndexerInput):Promise<starrs.DataReply>;
export function UpdateSonarrIndexer(arg1:starrs.AppConfig,arg2:sonarr.IndexerInput,arg3:boolean):Promise<starrs.DataReply>;

export function UpdateSonarrQualityProfile(arg1:starrs.AppConfig,arg2:sonarr.QualityProfile):Promise<starrs.DataReply>;

export function UpdateWhisparrDownloadClient(arg1:starrs.AppConfig,arg2:boolean,arg3:sonarr.DownloadClientInput):Promise<starrs.DataReply>;
export function UpdateWhisparrDownloadClient(arg1:starrs.AppConfig,arg2:sonarr.DownloadClientInput,arg3:boolean):Promise<starrs.DataReply>;

export function UpdateWhisparrExclusion(arg1:starrs.AppConfig,arg2:sonarr.Exclusion):Promise<starrs.DataReply>;

export function UpdateWhisparrImportList(arg1:starrs.AppConfig,arg2:boolean,arg3:sonarr.ImportListInput):Promise<starrs.DataReply>;
export function UpdateWhisparrImportList(arg1:starrs.AppConfig,arg2:sonarr.ImportListInput,arg3:boolean):Promise<starrs.DataReply>;

export function UpdateWhisparrIndexer(arg1:starrs.AppConfig,arg2:boolean,arg3:sonarr.IndexerInput):Promise<starrs.DataReply>;
export function UpdateWhisparrIndexer(arg1:starrs.AppConfig,arg2:sonarr.IndexerInput,arg3:boolean):Promise<starrs.DataReply>;

export function UpdateWhisparrQualityProfile(arg1:starrs.AppConfig,arg2:sonarr.QualityProfile):Promise<starrs.DataReply>;
44 changes: 23 additions & 21 deletions pkg/starrs/downloaders.go
Original file line number Diff line number Diff line change
Expand Up @@ -179,71 +179,71 @@ func (s *Starrs) testDownloadClientReply(

func (s *Starrs) UpdateLidarrDownloadClient(
config *AppConfig,
force bool,
downloader *lidarr.DownloadClientInput,
force bool,
) (*DataReply, error) {
s.log.Tracef("Call:UpdateLidarrDownloadClient(%s, %s, %d)", config.App, config.Name, downloader.ID)
data, err := s.updateDownloadClient(config, force, downloader)
data, err := s.updateDownloadClient(config, downloader, force)

return s.updateDownloadClientReply(config.Name, downloader.Name, downloader.ID, data, err)
}

func (s *Starrs) UpdateProwlarrDownloadClient(
config *AppConfig,
force bool,
downloader *prowlarr.DownloadClientInput,
force bool,
) (*DataReply, error) {
s.log.Tracef("Call:UpdateProwlarrDownloadClient(%s, %s, %d)", config.App, config.Name, downloader.ID)
data, err := s.updateDownloadClient(config, force, downloader)
data, err := s.updateDownloadClient(config, downloader, force)

return s.updateDownloadClientReply(config.Name, downloader.Name, downloader.ID, data, err)
}

func (s *Starrs) UpdateRadarrDownloadClient(
config *AppConfig,
force bool,
downloader *radarr.DownloadClientInput,
force bool,
) (*DataReply, error) {
s.log.Tracef("Call:UpdateRadarrDownloadClient(%s, %s, %d)", config.App, config.Name, downloader.ID)
data, err := s.updateDownloadClient(config, force, downloader)
data, err := s.updateDownloadClient(config, downloader, force)

return s.updateDownloadClientReply(config.Name, downloader.Name, downloader.ID, data, err)
}

func (s *Starrs) UpdateReadarrDownloadClient(
config *AppConfig,
force bool,
downloader *readarr.DownloadClientInput,
force bool,
) (*DataReply, error) {
s.log.Tracef("Call:UpdateReadarrDownloadClient(%s, %s, %d)", config.App, config.Name, downloader.ID)
data, err := s.updateDownloadClient(config, force, downloader)
data, err := s.updateDownloadClient(config, downloader, force)

return s.updateDownloadClientReply(config.Name, downloader.Name, downloader.ID, data, err)
}

func (s *Starrs) UpdateSonarrDownloadClient(
config *AppConfig,
force bool,
downloader *sonarr.DownloadClientInput,
force bool,
) (*DataReply, error) {
s.log.Tracef("Call:UpdateSonarrDownloadClient(%s, %s, %d)", config.App, config.Name, downloader.ID)
data, err := s.updateDownloadClient(config, force, downloader)
data, err := s.updateDownloadClient(config, downloader, force)

return s.updateDownloadClientReply(config.Name, downloader.Name, downloader.ID, data, err)
}

func (s *Starrs) UpdateWhisparrDownloadClient(
config *AppConfig,
force bool,
downloader *sonarr.DownloadClientInput,
force bool,
) (*DataReply, error) {
s.log.Tracef("Call:UpdateWhisparrDownloadClient(%s, %s, %d)", config.App, config.Name, downloader.ID)
data, err := s.updateDownloadClient(config, force, downloader)
data, err := s.updateDownloadClient(config, downloader, force)

return s.updateDownloadClientReply(config.Name, downloader.Name, downloader.ID, data, err)
}

func (s *Starrs) updateDownloadClient(config *AppConfig, force bool, downloader any) (any, error) {
func (s *Starrs) updateDownloadClient(config *AppConfig, downloader any, force bool) (any, error) {
instance, err := s.newAPIinstance(config)
if err != nil {
return nil, err
Expand Down Expand Up @@ -351,7 +351,7 @@ func (s *Starrs) ImportDownloadClients(config *AppConfig) (*DataReply, error) {
}

func (s *Starrs) AddLidarrDownloadClient(config *AppConfig, client *lidarr.DownloadClientInput) (*DataReply, error) {
data, err := s.addDownloadClient(config, client)
data, err := s.addDownloadClient(config, client, client.Name)

return &DataReply{
Data: data,
Expand All @@ -363,7 +363,7 @@ func (s *Starrs) AddProwlarrDownloadClient(
config *AppConfig,
client *prowlarr.DownloadClientInput,
) (*DataReply, error) {
data, err := s.addDownloadClient(config, client)
data, err := s.addDownloadClient(config, client, client.Name)

return &DataReply{
Data: data,
Expand All @@ -372,7 +372,7 @@ func (s *Starrs) AddProwlarrDownloadClient(
}

func (s *Starrs) AddRadarrDownloadClient(config *AppConfig, client *radarr.DownloadClientInput) (*DataReply, error) {
data, err := s.addDownloadClient(config, client)
data, err := s.addDownloadClient(config, client, client.Name)

return &DataReply{
Data: data,
Expand All @@ -381,7 +381,7 @@ func (s *Starrs) AddRadarrDownloadClient(config *AppConfig, client *radarr.Downl
}

func (s *Starrs) AddReadarrDownloadClient(config *AppConfig, client *readarr.DownloadClientInput) (*DataReply, error) {
data, err := s.addDownloadClient(config, client)
data, err := s.addDownloadClient(config, client, client.Name)

return &DataReply{
Data: data,
Expand All @@ -390,7 +390,7 @@ func (s *Starrs) AddReadarrDownloadClient(config *AppConfig, client *readarr.Dow
}

func (s *Starrs) AddSonarrDownloadClient(config *AppConfig, client *sonarr.DownloadClientInput) (*DataReply, error) {
data, err := s.addDownloadClient(config, client)
data, err := s.addDownloadClient(config, client, client.Name)

return &DataReply{
Data: data,
Expand All @@ -399,15 +399,17 @@ func (s *Starrs) AddSonarrDownloadClient(config *AppConfig, client *sonarr.Downl
}

func (s *Starrs) AddWhisparrDownloadClient(config *AppConfig, client *sonarr.DownloadClientInput) (*DataReply, error) {
data, err := s.addDownloadClient(config, client)
data, err := s.addDownloadClient(config, client, client.Name)

return &DataReply{
Data: data,
Msg: fmt.Sprintf("Imported Download Client '%s (%s)' into %s", client.Name, client.Protocol, config.Name),
}, err
}

func (s *Starrs) addDownloadClient(config *AppConfig, downloader any) (any, error) {
func (s *Starrs) addDownloadClient(config *AppConfig, downloadClient any, clientName string) (any, error) {
s.log.Tracef("Call:Add%sDownloadClient(%s, %s)", config.App, config.Name, clientName)

instance, err := s.newAPIinstance(config)
if err != nil {
return nil, err
Expand All @@ -418,7 +420,7 @@ func (s *Starrs) addDownloadClient(config *AppConfig, downloader any) (any, erro
// Svelte just won't update some reactive variables if you return quickly.
defer func() { time.Sleep(time.Until(end)) }()

switch data := downloader.(type) {
switch data := downloadClient.(type) {
case *lidarr.DownloadClientInput:
return lidarr.New(instance.Config).AddDownloadClientContext(s.ctx, data)
case *prowlarr.DownloadClientInput:
Expand Down
14 changes: 8 additions & 6 deletions pkg/starrs/exclusions.go
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ func (s *Starrs) ImportExclusions(config *AppConfig) (*DataReply, error) {
}

func (s *Starrs) AddLidarrExclusion(config *AppConfig, exclusion *lidarr.Exclusion) (*DataReply, error) {
data, err := s.addExclusion(config, exclusion)
data, err := s.addExclusion(config, exclusion, exclusion.ArtistName)

return &DataReply{
Data: data,
Expand All @@ -249,7 +249,7 @@ func (s *Starrs) AddLidarrExclusion(config *AppConfig, exclusion *lidarr.Exclusi
}

func (s *Starrs) AddRadarrExclusion(config *AppConfig, exclusion *radarr.Exclusion) (*DataReply, error) {
data, err := s.addExclusion(config, exclusion)
data, err := s.addExclusion(config, exclusion, exclusion.Title)
if err != nil {
return nil, err
}
Expand All @@ -258,7 +258,7 @@ func (s *Starrs) AddRadarrExclusion(config *AppConfig, exclusion *radarr.Exclusi
}

func (s *Starrs) AddReadarrExclusion(config *AppConfig, exclusion *readarr.Exclusion) (*DataReply, error) {
data, err := s.addExclusion(config, exclusion)
data, err := s.addExclusion(config, exclusion, exclusion.AuthorName)

return &DataReply{
Data: data,
Expand All @@ -267,16 +267,18 @@ func (s *Starrs) AddReadarrExclusion(config *AppConfig, exclusion *readarr.Exclu
}

func (s *Starrs) AddSonarrExclusion(config *AppConfig, exclusion *sonarr.Exclusion) (*DataReply, error) {
data, err := s.addExclusion(config, exclusion)
data, err := s.addExclusion(config, exclusion, exclusion.Title)
return &DataReply{Data: data, Msg: fmt.Sprintf("Imported Exclusion '%s' into %s", exclusion.Title, config.Name)}, err
}

func (s *Starrs) AddWhisparrExclusion(config *AppConfig, exclusion *sonarr.Exclusion) (*DataReply, error) {
data, err := s.addExclusion(config, exclusion)
data, err := s.addExclusion(config, exclusion, exclusion.Title)
return &DataReply{Data: data, Msg: fmt.Sprintf("Imported Exclusion '%s' into %s", exclusion.Title, config.Name)}, err
}

func (s *Starrs) addExclusion(config *AppConfig, exclusion any) (any, error) {
func (s *Starrs) addExclusion(config *AppConfig, exclusion any, exclusionName string) (any, error) {
s.log.Tracef("Call:Add%sExclusion(%s, %s)", config.App, config.Name, exclusionName)

instance, err := s.newAPIinstance(config)
if err != nil {
return nil, err
Expand Down
1 change: 0 additions & 1 deletion pkg/starrs/importable.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ func (s *Starrs) getExportInstance(config *AppConfig, selected Selected, item st

instance, err := s.newAPIinstance(config)
if err != nil {
wr.LogError(s.ctx, err.Error())
return nil, err
}

Expand Down
Loading

0 comments on commit 66ba7f2

Please sign in to comment.