Skip to content

Commit ec4d673

Browse files
authored
Merge pull request #430 from sinfo/staging
Update 1.1.0
2 parents 8211828 + b339c1e commit ec4d673

21 files changed

+283
-76
lines changed

backend/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ go 1.12
44

55
require (
66
cloud.google.com/go v0.46.3 // indirect
7+
github.com/arran4/golang-ical v0.2.7
78
github.com/dgrijalva/jwt-go v3.2.0+incompatible
89
github.com/digitalocean/godo v1.19.0
910
github.com/google/uuid v1.3.0
@@ -23,7 +24,6 @@ require (
2324
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45
2425
golang.org/x/sys v0.1.0 // indirect
2526
google.golang.org/appengine v1.6.2 // indirect
26-
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
2727
gopkg.in/ini.v1 v1.46.0 // indirect
2828
gotest.tools v0.0.0-20181223230014-1083505acf35
2929
)

backend/go.sum

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAE
1616
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
1717
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
1818
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
19+
github.com/arran4/golang-ical v0.2.7 h1:VO7YlVaGupZE15aj6NhUhte/MIfZuoIzkoI71VsG6Gg=
20+
github.com/arran4/golang-ical v0.2.7/go.mod h1:RqMuPGmwRRwjkb07hmm+JBqcWa1vF1LvVmPtSZN2OhQ=
1921
github.com/aws/aws-sdk-go v1.34.28 h1:sscPpn/Ns3i0F4HPEWAVcwdIRaZZCuL7llJ2/60yPIk=
2022
github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48=
2123
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
@@ -27,6 +29,7 @@ github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc
2729
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
2830
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
2931
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
32+
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
3033
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
3134
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
3235
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -140,6 +143,7 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN
140143
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
141144
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
142145
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
146+
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
143147
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
144148
github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4=
145149
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
@@ -154,6 +158,7 @@ github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQz
154158
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
155159
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
156160
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
161+
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
157162
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
158163
github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=
159164
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
@@ -209,6 +214,7 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf
209214
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
210215
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
211216
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
217+
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
212218
github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4=
213219
github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
214220
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
@@ -362,6 +368,7 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
362368
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
363369
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
364370
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
371+
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
365372
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
366373
gopkg.in/ini.v1 v1.41.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
367374
gopkg.in/ini.v1 v1.46.0 h1:VeDZbLYGaupuvIrsYCEOe/L/2Pcs5n7hdO1ZTjporag=
@@ -374,6 +381,7 @@ gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
374381
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
375382
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
376383
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
384+
gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
377385
gotest.tools v0.0.0-20181223230014-1083505acf35 h1:zpdCK+REwbk+rqjJmHhiCN6iBIigrZ39glqSF0P3KF0=
378386
gotest.tools v0.0.0-20181223230014-1083505acf35/go.mod h1:R//lfYlUuTOTfblYI3lGoAAAebUdzjvbmQsuB7Ykd90=
379387
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=

backend/src/models/event.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ type Event struct {
4545

4646
// Teams is an array of Team_id (see models.Team).
4747
Teams []primitive.ObjectID `json:"teams" bson:"teams"`
48+
49+
// Calendar is a link to the event's calendar.
50+
CalendarUrl string `json:"calendarUrl" bson:"calendarUrl"`
4851
}
4952

5053
// DurationInDays returns the duration of the event in days.
@@ -83,6 +86,8 @@ type EventPublic struct {
8386
// Example: index 1 corresponds to monday, index 2 to tuesday, etc).
8487
// The themes can be "Software Engineer", "Security", "Gaming", etc.
8588
Themes []string `json:"themes" bson:"themes"`
89+
90+
CalendarUrl string `json:"calendarUrl" bson:"calendarUrl"`
8691
}
8792

8893
// DurationInDays returns the duration of the event in days.

backend/src/mongodb/event.go

Lines changed: 40 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,12 @@ func (e *EventsType) GetCurrentEvent() (*models.Event, error) {
7878
func eventToPublic(event models.Event) *models.EventPublic {
7979

8080
public := models.EventPublic{
81-
ID: event.ID,
82-
Name: event.Name,
83-
Begin: event.Begin,
84-
End: event.End,
85-
Themes: event.Themes,
81+
ID: event.ID,
82+
Name: event.Name,
83+
Begin: event.Begin,
84+
End: event.End,
85+
Themes: event.Themes,
86+
CalendarUrl: event.CalendarUrl,
8687
}
8788

8889
return &public
@@ -120,14 +121,15 @@ func (e *EventsType) CreateEvent(data CreateEventData) (*models.Event, error) {
120121
}
121122

122123
var c = bson.M{
123-
"_id": latestEvent.ID + 1,
124-
"name": data.Name,
125-
"themes": make([]string, 0),
126-
"packages": make([]models.EventPackages, 0),
127-
"items": make([]primitive.ObjectID, 0),
128-
"meetings": make([]primitive.ObjectID, 0),
129-
"sessions": make([]primitive.ObjectID, 0),
130-
"teams": make([]primitive.ObjectID, 0),
124+
"_id": latestEvent.ID + 1,
125+
"name": data.Name,
126+
"themes": make([]string, 0),
127+
"packages": make([]models.EventPackages, 0),
128+
"items": make([]primitive.ObjectID, 0),
129+
"meetings": make([]primitive.ObjectID, 0),
130+
"sessions": make([]primitive.ObjectID, 0),
131+
"teams": make([]primitive.ObjectID, 0),
132+
"calendarUrl": "",
131133
}
132134

133135
insertResult, err := e.Collection.InsertOne(ctx, c)
@@ -779,3 +781,28 @@ func (e *EventsType) RemoveTeam(eventID int, teamID primitive.ObjectID) (*models
779781

780782
return &updatedEvent, nil
781783
}
784+
785+
// Func that updates event calendar
786+
func (e *EventsType) UpdateCalendar(eventID int, calendarUrl string) (*models.Event, error) {
787+
ctx := context.Background()
788+
789+
var updateQuery = bson.M{
790+
"$set": bson.M{
791+
"calendarUrl": calendarUrl,
792+
},
793+
}
794+
795+
var filterQuery = bson.M{"_id": eventID}
796+
797+
var optionsQuery = options.FindOneAndUpdate()
798+
optionsQuery.SetReturnDocument(options.After)
799+
800+
var updatedEvent models.Event
801+
802+
if err := e.Collection.FindOneAndUpdate(ctx, filterQuery, updateQuery, optionsQuery).Decode(&updatedEvent); err != nil {
803+
log.Println("error updating event's calendar:", err)
804+
return nil, err
805+
}
806+
807+
return &updatedEvent, nil
808+
}

backend/src/router/events.go

Lines changed: 108 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,14 @@ import (
66
"log"
77
"net/http"
88
"strconv"
9+
"strings"
910
"time"
1011

12+
ics "github.com/arran4/golang-ical"
1113
"github.com/gorilla/mux"
1214
"github.com/sinfo/deck2/src/models"
1315
"github.com/sinfo/deck2/src/mongodb"
16+
"github.com/sinfo/deck2/src/spaces"
1417
"go.mongodb.org/mongo-driver/bson/primitive"
1518
)
1619

@@ -498,21 +501,123 @@ func removeTeamFromEvent(w http.ResponseWriter, r *http.Request) {
498501
currentEvent, err := mongodb.Events.GetCurrentEvent()
499502

500503
if err != nil {
501-
http.Error(w, "Could not find current event: " + err.Error(), http.StatusNotFound)
504+
http.Error(w, "Could not find current event: "+err.Error(), http.StatusNotFound)
502505
return
503506
}
504507

505508
if _, err = mongodb.Teams.GetTeam(teamID); err != nil {
506-
http.Error(w, "Could not find team: " + err.Error(), http.StatusNotFound)
509+
http.Error(w, "Could not find team: "+err.Error(), http.StatusNotFound)
507510
return
508511
}
509512

510513
updatedEvent, err := mongodb.Events.RemoveTeam(currentEvent.ID, teamID)
511514

512515
if err != nil {
513-
http.Error(w, "Could not remove team from event: " + err.Error(), http.StatusExpectationFailed)
516+
http.Error(w, "Could not remove team from event: "+err.Error(), http.StatusExpectationFailed)
514517
return
515518
}
516519

517520
json.NewEncoder(w).Encode(updatedEvent)
518521
}
522+
523+
func updateCalendar(w http.ResponseWriter, r *http.Request) {
524+
525+
defer r.Body.Close()
526+
527+
currentEvent, err := mongodb.Events.GetCurrentEvent()
528+
if err != nil {
529+
http.Error(w, "Could not find current event: "+err.Error(), http.StatusNotFound)
530+
return
531+
}
532+
533+
sessions, err := mongodb.Sessions.GetPublicSessions(mongodb.GetSessionsPublicOptions{})
534+
if err != nil {
535+
http.Error(w, "Could not get sessions: "+err.Error(), http.StatusExpectationFailed)
536+
return
537+
}
538+
539+
calendar := ics.NewCalendar()
540+
calendar.SetMethod(ics.MethodRequest)
541+
calendar.SetProductId("-//deck.sinfo.org//deck//EN")
542+
calendar.SetXWRCalName(fmt.Sprintf("SINFO %d Sessions", currentEvent.ID))
543+
calendar.SetVersion("3.0")
544+
545+
for _, session := range sessions {
546+
event := calendar.AddEvent(fmt.Sprintf("sinfo-%d-%s", currentEvent.ID, session.ID.Hex()))
547+
event.SetCreatedTime(time.Now())
548+
event.SetDtStampTime(time.Now())
549+
550+
// makes session names more readable
551+
kind := session.Kind
552+
sessionKind := "Session"
553+
554+
if kind == "TALK" {
555+
sessionKind = "Keynote"
556+
} else if kind == "WORKSHOP" {
557+
sessionKind = "Workshop"
558+
} else if kind == "PRESENTATION" {
559+
sessionKind = "Presentation"
560+
}
561+
562+
// sets summary of event differently depending on the kind of session
563+
if kind == "WORKSHOP" || kind == "PRESENTATION" {
564+
event.SetSummary(fmt.Sprintf("%s - %s", session.CompanyPublic.Name, sessionKind))
565+
} else {
566+
speakerNames := ""
567+
568+
// in case of a panel with more than one speaker
569+
for _, speaker := range *session.SpeakersPublic {
570+
speakerNames += speaker.Name + ", "
571+
}
572+
573+
// remove last comma
574+
speakerNames = speakerNames[:len(speakerNames)-2]
575+
576+
event.SetSummary(fmt.Sprintf("%s - %s", speakerNames, sessionKind))
577+
}
578+
579+
event.SetDescription(fmt.Sprintf("%s Title:\n%s\n\nDescription:\n%s", sessionKind, session.Title, session.Description))
580+
event.SetLocation(session.Place)
581+
event.SetStartAt(session.Begin)
582+
event.SetEndAt(session.End)
583+
}
584+
585+
// get size of calendar file
586+
calendarString := calendar.Serialize()
587+
calendarReader := strings.NewReader(calendarString)
588+
size := int64(calendarReader.Len())
589+
590+
url, err := spaces.UploadCalendarFile(currentEvent.ID, calendarReader, size, "text/calendar")
591+
if err != nil {
592+
http.Error(w, fmt.Sprintf("Couldn't upload file: %v", err), http.StatusExpectationFailed)
593+
return
594+
}
595+
596+
updatedEvent, err := mongodb.Events.UpdateCalendar(currentEvent.ID, *url)
597+
if err != nil {
598+
http.Error(w, "Could not update event's calendar: "+err.Error(), http.StatusExpectationFailed)
599+
return
600+
}
601+
602+
json.NewEncoder(w).Encode(updatedEvent)
603+
}
604+
605+
func getEventCalendar(w http.ResponseWriter, r *http.Request) {
606+
607+
defer r.Body.Close()
608+
609+
currentEvent, err := mongodb.Events.GetCurrentEvent()
610+
611+
if err != nil {
612+
http.Error(w, "Could not find event: "+err.Error(), http.StatusNotFound)
613+
return
614+
}
615+
616+
// check if calendar file exists
617+
if currentEvent.CalendarUrl == "" {
618+
http.Error(w, "Calendar file not found", http.StatusNotFound)
619+
return
620+
}
621+
622+
http.Redirect(w, r, currentEvent.CalendarUrl, http.StatusPermanentRedirect)
623+
}

backend/src/router/init.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ func InitializeRouter() {
143143
publicRouter.HandleFunc("/sessions/{id}", getSessionPublic).Methods("GET")
144144
publicRouter.HandleFunc("/speakers/{id}", getSpeakerPublic).Methods("GET")
145145
publicRouter.HandleFunc("/events/latest", getLatestEvent).Methods("GET")
146+
publicRouter.HandleFunc("/calendar.ics", getEventCalendar).Methods("GET")
146147

147148
// auth handlers
148149
authRouter := r.PathPrefix("/auth").Subrouter()
@@ -221,6 +222,7 @@ func InitializeRouter() {
221222
eventRouter.HandleFunc("/meetings/{id}", authTeamLeader(removeMeetingFromEvent)).Methods("DELETE")
222223
eventRouter.HandleFunc("/sessions", authCoordinator(addSessionToEvent)).Methods("POST")
223224
eventRouter.HandleFunc("/teams/{id}", authAdmin(removeTeamFromEvent)).Methods("DELETE")
225+
eventRouter.HandleFunc("/updateCalendar", authCoordinator(updateCalendar)).Methods("GET")
224226

225227
// team handlers
226228
teamRouter := r.PathPrefix("/teams").Subrouter()

backend/src/spaces/calendar.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package spaces
2+
3+
import (
4+
"fmt"
5+
"io"
6+
)
7+
8+
const (
9+
calendarPath = "calendar"
10+
)
11+
12+
func UploadCalendarFile(event int, reader io.Reader, objectSize int64, MIME string) (*string, error) {
13+
path := fmt.Sprintf("sinfo-%d/%s", event, calendarPath)
14+
return uploadImage(path, reader, objectSize, MIME)
15+
}

frontend/Dockerfile

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,14 @@ RUN apt-get install -y curl git wget unzip libgconf-2-4 gdb libstdc++6 libglu1-m
55
RUN apt-get clean
66

77
# Clone the flutter repo
8-
# Temporary fix while the cuppertino_icons package is not fixed to work with Flutter 3.13.0 (latest stable release).
9-
RUN git clone --branch 3.10.6 https://github.com/flutter/flutter.git /usr/local/flutter
8+
RUN git clone https://github.com/flutter/flutter.git /usr/local/flutter
109

1110
# Set flutter path
1211
ENV PATH="/usr/local/flutter/bin:/usr/local/flutter/bin/cache/dart-sdk/bin:${PATH}"
1312

1413
# Enable flutter web
15-
# RUN flutter channel stable
16-
# RUN flutter upgrade
14+
RUN flutter channel stable
15+
RUN flutter upgrade
1716
RUN flutter config --enable-web
1817

1918
# Run flutter doctor

frontend/Dockerfile_staging

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,14 @@ RUN apt-get install -y curl git wget unzip libgconf-2-4 gdb libstdc++6 libglu1-m
55
RUN apt-get clean
66

77
# Clone the flutter repo
8-
# Temporary fix while the cuppertino_icons package is not fixed to work with Flutter 3.13.0 (latest stable release).
9-
RUN git clone --branch 3.10.6 https://github.com/flutter/flutter.git /usr/local/flutter
8+
RUN git clone https://github.com/flutter/flutter.git /usr/local/flutter
109

1110
# Set flutter path
1211
ENV PATH="/usr/local/flutter/bin:/usr/local/flutter/bin/cache/dart-sdk/bin:${PATH}"
1312

1413
# Enable flutter web
15-
# RUN flutter channel stable
16-
# RUN flutter upgrade
14+
RUN flutter channel stable
15+
RUN flutter upgrade
1716
RUN flutter config --enable-web
1817

1918
# Run flutter doctor

frontend/lib/components/ListViewCard.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import 'package:collection/collection.dart';
1717
import 'package:frontend/services/companyService.dart';
1818
import 'package:frontend/services/speakerService.dart';
1919
import 'package:provider/provider.dart';
20-
import 'package:flutter/foundation.dart';
2120

2221
class ListViewCard extends StatefulWidget {
2322
final Member? member;
@@ -255,7 +254,7 @@ class _ListViewCardState extends State<ListViewCard> {
255254
: Colors.black,
256255
),
257256
value: steps[0],
258-
style: Theme.of(context).textTheme.subtitle2,
257+
style: Theme.of(context).textTheme.titleSmall,
259258
selectedItemBuilder: (BuildContext context) {
260259
return steps.map((e) {
261260
return Container(

0 commit comments

Comments
 (0)