1
0
Fork 0
tooty/src/Types.elm

240 lines
6.2 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 Account (MastodonResult Relationship)
| AccountFollowers Bool (MastodonResult (List Account))
| AccountFollowing Bool (MastodonResult (List Account))
| AccountBlocked Account (MastodonResult Relationship)
| AccountMuted Account (MastodonResult Relationship)
| AccountReceived (MastodonResult Account)
| AccountRelationship (MastodonResult (List Relationship))
| AccountRelationships (MastodonResult (List Relationship))
| AccountTimeline Bool (MastodonResult (List Status))
| AccountUnfollowed Account (MastodonResult Relationship)
| AccountUnblocked Account (MastodonResult Relationship)
| AccountUnmuted Account (MastodonResult Relationship)
| AppRegistered (MastodonResult AppRegistration)
| AutoSearch (MastodonResult (List Account))
| Blocks Bool (MastodonResult (List Account))
| ContextLoaded Status (MastodonResult Context)
| CurrentUser (MastodonResult Account)
| FavoriteAdded (MastodonResult Status)
| FavoriteRemoved (MastodonResult Status)
| FavoriteTimeline Bool (MastodonResult (List Status))
| GlobalTimeline Bool (MastodonResult (List Status))
| HashtagTimeline Bool (MastodonResult (List Status))
| HomeTimeline Bool (MastodonResult (List Status))
| LocalTimeline Bool (MastodonResult (List Status))
| Mutes Bool (MastodonResult (List Account))
| Notifications Bool (MastodonResult (List Notification))
| Reblogged (MastodonResult Status)
| StatusDeleted (MastodonResult Int)
| StatusPosted (MastodonResult Status)
| Unreblogged (MastodonResult Status)
type WebSocketMsg
= NewWebsocketGlobalMessage String
| NewWebsocketLocalMessage String
| NewWebsocketUserMessage String
type Msg
= AddFavorite Status
2017-05-12 20:41:11 +00:00
| AskConfirm String Msg Msg
| Block Account
| ClearError Int
| CloseAccount
| 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 Account
| LoadAccount Int
2017-05-12 20:03:52 +00:00
| LogoutClient Client
| TimelineLoadNext String String
| MastodonEvent MastodonMsg
| Mute Account
| NoOp
| OpenThread Status
| ReblogStatus Status
| Register
| RemoveFavorite Status
| ScrollColumn ScrollDirection String
| ServerChange String
| SetView CurrentView
| SubmitDraft
| SwitchClient Client
| Tick Time
| UnfollowAccount Account
| Unblock Account
| Unmute Account
| UnreblogStatus Status
| UrlChange Navigation.Location
| 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
| BlocksView
| FavoriteTimelineView
| GlobalTimelineView
| HashtagView String
| LocalTimelineView
| MutesView
| 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
, favoriteTimeline : Timeline Status
, hashtagTimeline : Timeline Status
, mutes : Timeline Account
, blocks : Timeline Account
, 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
, 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
}