chore: replace todos with issues (#1066)

This commit is contained in:
G r e y
2022-04-19 12:16:57 -04:00
committed by GitHub
parent 04985a1754
commit 5ce06769cd
10 changed files with 15 additions and 26 deletions

View File

@ -35,7 +35,6 @@ endif
.PHONY: fmt/prettier .PHONY: fmt/prettier
fmt/sql: $(wildcard coderd/database/queries/*.sql) fmt/sql: $(wildcard coderd/database/queries/*.sql)
# TODO: this is slightly slow
for fi in coderd/database/queries/*.sql; do \ for fi in coderd/database/queries/*.sql; do \
npx sql-formatter \ npx sql-formatter \
--language postgresql \ --language postgresql \

View File

@ -3,8 +3,6 @@ package usershell
import "os" import "os"
// Get returns the $SHELL environment variable. // Get returns the $SHELL environment variable.
// TODO: This should use "dscl" to fetch the proper value. See:
// https://stackoverflow.com/questions/16375519/how-to-get-the-default-shell
func Get(username string) (string, error) { func Get(username string) (string, error) {
return os.Getenv("SHELL"), nil return os.Getenv("SHELL"), nil
} }

View File

@ -22,7 +22,7 @@ func workspaceAutostart() *cobra.Command {
Short: "schedule a workspace to automatically start at a regular time", Short: "schedule a workspace to automatically start at a regular time",
Long: autostartDescriptionLong, Long: autostartDescriptionLong,
Example: "coder workspaces autostart enable my-workspace --minute 30 --hour 9 --days 1-5 --tz Europe/Dublin", Example: "coder workspaces autostart enable my-workspace --minute 30 --hour 9 --days 1-5 --tz Europe/Dublin",
Hidden: true, // TODO(cian): un-hide when autostart scheduling implemented Hidden: true,
} }
autostartCmd.AddCommand(workspaceAutostartEnable()) autostartCmd.AddCommand(workspaceAutostartEnable())

View File

@ -22,7 +22,7 @@ func workspaceAutostop() *cobra.Command {
Short: "schedule a workspace to automatically stop at a regular time", Short: "schedule a workspace to automatically stop at a regular time",
Long: autostopDescriptionLong, Long: autostopDescriptionLong,
Example: "coder workspaces autostop enable my-workspace --minute 0 --hour 18 --days 1-5 -tz Europe/Dublin", Example: "coder workspaces autostop enable my-workspace --minute 0 --hour 18 --days 1-5 -tz Europe/Dublin",
Hidden: true, // TODO(cian): un-hide when autostop scheduling implemented Hidden: true,
} }
autostopCmd.AddCommand(workspaceAutostopEnable()) autostopCmd.AddCommand(workspaceAutostopEnable())

View File

@ -20,8 +20,6 @@ type Role struct {
Name string `json:"name"` Name string `json:"name"`
Site []Permission `json:"site"` Site []Permission `json:"site"`
// Org is a map of orgid to permissions. We represent orgid as a string. // Org is a map of orgid to permissions. We represent orgid as a string.
// TODO: Maybe switch to uuid, but tokens might need to support a "wildcard" org
// which could be a special uuid (like all 0s?)
Org map[string][]Permission `json:"org"` Org map[string][]Permission `json:"org"`
User []Permission `json:"user"` User []Permission `json:"user"`
} }
@ -49,7 +47,6 @@ var (
RoleAuditor = Role{ RoleAuditor = Role{
Name: "auditor", Name: "auditor",
Site: permissions(map[Object][]Action{ Site: permissions(map[Object][]Action{
// TODO: @emyrk when audit logs are added, add back a read perm
//ResourceAuditLogs: {ActionRead}, //ResourceAuditLogs: {ActionRead},
// Should be able to read user details to associate with logs. // Should be able to read user details to associate with logs.
// Without this the user-id in logs is not very helpful // Without this the user-id in logs is not very helpful

View File

@ -245,9 +245,9 @@ func (c *Channel) Write(bytes []byte) (n int, err error) {
if c.dc.BufferedAmount()+uint64(len(bytes)) >= maxBufferedAmount { if c.dc.BufferedAmount()+uint64(len(bytes)) >= maxBufferedAmount {
<-c.sendMore <-c.sendMore
} }
// TODO (@kyle): There's an obvious race-condition here. // REMARK: There's an obvious race-condition here. This is an edge-case, as
// This is an edge-case, as most-frequently data won't // most-frequently data won't be pooled so synchronously, but is
// be pooled so synchronously, but is definitely possible. // definitely possible.
// //
// See: https://github.com/pion/sctp/issues/181 // See: https://github.com/pion/sctp/issues/181
time.Sleep(time.Microsecond) time.Sleep(time.Microsecond)

View File

@ -57,10 +57,10 @@ interface WaitForClientSideNavigationOpts {
* @remark This is necessary in a client-side SPA world since playwright * @remark This is necessary in a client-side SPA world since playwright
* waitForNavigation waits for load events on the DOM (ex: after a page load * waitForNavigation waits for load events on the DOM (ex: after a page load
* from the server). * from the server).
*
* @todo Better logging for this.
*/ */
export const waitForClientSideNavigation = async (page: Page, opts: WaitForClientSideNavigationOpts): Promise<void> => { export const waitForClientSideNavigation = async (page: Page, opts: WaitForClientSideNavigationOpts): Promise<void> => {
console.info(`--- waitForClientSideNavigation: start`)
await Promise.all([ await Promise.all([
waitFor(() => { waitFor(() => {
const conditions: boolean[] = [] const conditions: boolean[] = []
@ -74,9 +74,12 @@ export const waitForClientSideNavigation = async (page: Page, opts: WaitForClien
} }
const unmetConditions = conditions.filter((condition) => !condition) const unmetConditions = conditions.filter((condition) => !condition)
console.info(`--- waitForClientSideNavigation: ${unmetConditions.length} conditions not met`)
return Promise.resolve(unmetConditions.length === 0) return Promise.resolve(unmetConditions.length === 0)
}), }),
page.waitForLoadState("networkidle"), page.waitForLoadState("networkidle"),
]) ])
console.info(`--- waitForClientSideNavigation: done`)
} }

View File

@ -270,8 +270,6 @@ func secureHeaders(next http.Handler) http.Handler {
// Only scripts can manipulate the dom. This prevents someone from // Only scripts can manipulate the dom. This prevents someone from
// naming themselves something like '<svg onload="alert(/cross-site-scripting/)" />'. // naming themselves something like '<svg onload="alert(/cross-site-scripting/)" />'.
// TODO: @emyrk we need to make FE changes to enable this. We get 'TrustedHTML' and 'TrustedURL' errors
// that require FE changes to work.
// "require-trusted-types-for" : []string{"'script'"}, // "require-trusted-types-for" : []string{"'script'"},
} }

View File

@ -62,7 +62,7 @@ export interface FormTextFieldProps<T>
* }} * }}
* /> * />
*/ */
eventTransform?: (value: string) => unknown eventTransform?: (value: string) => string
/** /**
* isPassword uses a PasswordField component when `true`; otherwise a * isPassword uses a PasswordField component when `true`; otherwise a
* TextField component is used. * TextField component is used.
@ -145,13 +145,8 @@ export const FormTextField = <T,>({
} }
const event = e const event = e
if (typeof eventTransform !== "undefined") { if (typeof eventTransform !== "undefined" && typeof event.target.value === "string") {
// TODO(Grey): Asserting the type as a string here is not quite event.target.value = eventTransform(e.target.value)
// right in that when an input is of type="number", the value will
// be a number. Type asserting is better than conversion for this
// reason, but perhaps there's a better way to do this without any
// assertions.
event.target.value = eventTransform(e.target.value) as string
} }
form.handleChange(event) form.handleChange(event)
}} }}

View File

@ -25,9 +25,8 @@ export const TemplatePage: React.FC = () => {
() => `/api/v2/organizations/${unsafeSWRArgument(organizationInfo).id}/templates/${templateName}`, () => `/api/v2/organizations/${unsafeSWRArgument(organizationInfo).id}/templates/${templateName}`,
) )
// TODO: The workspaces endpoint was recently changed, so that we can't get // This just grabs all workspaces... and then later filters them to match the
// workspaces per-template. This just grabs all workspaces... and then // current template.
// later filters them to match the current template.
const { data: workspaces, error: workspacesError } = useSWR<Workspace[], Error>(() => `/api/v2/users/me/workspaces`) const { data: workspaces, error: workspacesError } = useSWR<Workspace[], Error>(() => `/api/v2/users/me/workspaces`)
if (organizationError) { if (organizationError) {