1
0
Fork 0
tooty/src/Types.elm

223 lines
5.5 KiB
Elm
Raw Normal View History

module Types exposing (..)
import Autocomplete
import Mastodon.Http exposing (Response, Links)
import Mastodon.Model exposing (..)
import Navigation
import Time exposing (Time)
type alias Flags =
{ clients : List Client
, registration : Maybe AppRegistration
}
type DraftMsg
= ClearDraft
2017-05-11 08:55:15 +00:00
| CloseAutocomplete
| RemoveMedia Int
| ResetAutocomplete Bool
| SelectAccount String
| SetAutoState Autocomplete.Msg
| ToggleSpoiler Bool
| UpdateInputInformation InputInformation
| UpdateSensitive Bool
| UpdateSpoiler String
| UpdateVisibility String
| UpdateReplyTo Status
2017-05-11 08:55:15 +00:00
| UploadError String
| UploadMedia String
| UploadResult String
type ViewerMsg
= CloseViewer
| OpenViewer (List Attachment) Attachment
type alias MastodonResult a =
Result Error (Response a)
type MastodonMsg
= AccessToken (MastodonResult AccessTokenResult)
| AccountFollowed (MastodonResult Relationship)
| AccountFollowers Bool (MastodonResult (List Account))
| AccountFollowing Bool (MastodonResult (List Account))
| AccountReceived (MastodonResult Account)
| AccountRelationship (MastodonResult (List Relationship))
| AccountRelationships (MastodonResult (List Relationship))
| AccountTimeline Bool (MastodonResult (List Status))
| AccountUnfollowed (MastodonResult Relationship)
| AppRegistered (MastodonResult AppRegistration)
| AutoSearch (MastodonResult (List Account))
| ContextLoaded Status (MastodonResult Context)
| CurrentUser (MastodonResult Account)
| FavoriteAdded (MastodonResult Status)
| FavoriteRemoved (MastodonResult Status)
| GlobalTimeline Bool (MastodonResult (List Status))
| LocalTimeline Bool (MastodonResult (List Status))
| Notifications Bool (MastodonResult (List Notification))
| Reblogged (MastodonResult Status)
| StatusDeleted (MastodonResult Int)
| StatusPosted (MastodonResult Status)
| Unreblogged (MastodonResult Status)
2017-05-06 09:15:52 +00:00
| HomeTimeline Bool (MastodonResult (List Status))
type WebSocketMsg
= NewWebsocketGlobalMessage String
| NewWebsocketLocalMessage String
| NewWebsocketUserMessage String
type Msg
= AddFavorite Int
2017-05-12 20:41:11 +00:00
| AskConfirm String Msg Msg
| ClearError Int
| CloseAccount
| CloseAccountSelector
| CloseThread
2017-05-12 20:41:11 +00:00
| ConfirmCancelled Msg
| Confirmed Msg
| DeleteStatus Int
| DraftEvent DraftMsg
2017-04-30 10:15:33 +00:00
| FilterNotifications NotificationFilter
| FollowAccount Int
| LoadAccount Int
2017-05-12 20:03:52 +00:00
| LogoutClient Client
| TimelineLoadNext String String
| MastodonEvent MastodonMsg
| NoOp
| OpenThread Status
| OpenAccountSelector
| ReblogStatus Int
| Register
| RemoveFavorite Int
| ScrollColumn ScrollDirection String
| ServerChange String
| SubmitDraft
| SwitchClient Client
| Tick Time
| UnfollowAccount Int
| UrlChange Navigation.Location
| UseGlobalTimeline Bool
| UnreblogStatus Int
| ViewAccountFollowing Account
| ViewAccountFollowers Account
| ViewAccountStatuses Account
| ViewerEvent ViewerMsg
| WebSocketEvent WebSocketMsg
2017-05-12 20:41:11 +00:00
type alias Confirm =
{ message : String
, onConfirm : Msg
, onCancel : Msg
}
type CurrentView
= -- Basically, what we should be displaying in the fourth column
AccountFollowersView Account (Timeline Account)
| AccountFollowingView Account (Timeline Account)
| AccountView Account
| AccountSelectorView
| GlobalTimelineView
| LocalTimelineView
| ThreadView Thread
type alias Draft =
{ status : String
, inReplyTo : Maybe Status
, spoilerText : Maybe String
, sensitive : Bool
, visibility : String
2017-05-11 08:55:15 +00:00
, attachments : List Attachment
2017-05-11 10:23:10 +00:00
, mediaUploading : Bool
, statusLength : Int
-- Autocomplete values
, autoState : Autocomplete.State
, autoCursorPosition : Int
, autoAtPosition : Maybe Int
, autoQuery : String
, autoMaxResults : Int
, autoAccounts : List Account
, showAutoMenu : Bool
}
2017-04-30 09:46:51 +00:00
type NotificationFilter
= NotificationAll
| NotificationOnlyMentions
| NotificationOnlyDirect
2017-04-30 09:46:51 +00:00
| NotificationOnlyBoosts
| NotificationOnlyFavourites
| NotificationOnlyFollows
type ScrollDirection
= ScrollTop
| ScrollBottom
type alias Thread =
{ status : Status
, context : Context
}
type alias Viewer =
{ attachments : List Attachment
, attachment : Attachment
}
type alias Timeline a =
{ id : String
, entries : List a
, links : Links
2017-05-06 09:38:56 +00:00
, loading : Bool
}
type alias ErrorNotification =
{ message : String
, time : Time
}
type alias Model =
{ server : String
, currentTime : Time
, registration : Maybe AppRegistration
, clients : List Client
2017-05-06 09:15:52 +00:00
, homeTimeline : Timeline Status
, localTimeline : Timeline Status
, globalTimeline : Timeline Status
, accountTimeline : Timeline Status
, accountFollowers : Timeline Account
, accountFollowing : Timeline Account
, accountRelationships : List Relationship
, accountRelationship : Maybe Relationship
, notifications : Timeline NotificationAggregate
, draft : Draft
, errors : List ErrorNotification
, location : Navigation.Location
, useGlobalTimeline : Bool
, viewer : Maybe Viewer
, currentUser : Maybe Account
, currentView : CurrentView
2017-04-30 09:46:51 +00:00
, notificationFilter : NotificationFilter
2017-05-12 20:41:11 +00:00
, confirm : Maybe Confirm
}
type alias InputInformation =
{ status : String
, selectionStart : Int
}