mirror of
https://github.com/coder/coder.git
synced 2025-07-13 21:36:50 +00:00
chore: replace todos with issues (#1066)
This commit is contained in:
1
Makefile
1
Makefile
@ -35,7 +35,6 @@ endif
|
||||
.PHONY: fmt/prettier
|
||||
|
||||
fmt/sql: $(wildcard coderd/database/queries/*.sql)
|
||||
# TODO: this is slightly slow
|
||||
for fi in coderd/database/queries/*.sql; do \
|
||||
npx sql-formatter \
|
||||
--language postgresql \
|
||||
|
@ -3,8 +3,6 @@ package usershell
|
||||
import "os"
|
||||
|
||||
// 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) {
|
||||
return os.Getenv("SHELL"), nil
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ func workspaceAutostart() *cobra.Command {
|
||||
Short: "schedule a workspace to automatically start at a regular time",
|
||||
Long: autostartDescriptionLong,
|
||||
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())
|
||||
|
@ -22,7 +22,7 @@ func workspaceAutostop() *cobra.Command {
|
||||
Short: "schedule a workspace to automatically stop at a regular time",
|
||||
Long: autostopDescriptionLong,
|
||||
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())
|
||||
|
@ -20,8 +20,6 @@ type Role struct {
|
||||
Name string `json:"name"`
|
||||
Site []Permission `json:"site"`
|
||||
// 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"`
|
||||
User []Permission `json:"user"`
|
||||
}
|
||||
@ -49,7 +47,6 @@ var (
|
||||
RoleAuditor = Role{
|
||||
Name: "auditor",
|
||||
Site: permissions(map[Object][]Action{
|
||||
// TODO: @emyrk when audit logs are added, add back a read perm
|
||||
//ResourceAuditLogs: {ActionRead},
|
||||
// Should be able to read user details to associate with logs.
|
||||
// Without this the user-id in logs is not very helpful
|
||||
|
@ -245,9 +245,9 @@ func (c *Channel) Write(bytes []byte) (n int, err error) {
|
||||
if c.dc.BufferedAmount()+uint64(len(bytes)) >= maxBufferedAmount {
|
||||
<-c.sendMore
|
||||
}
|
||||
// TODO (@kyle): There's an obvious race-condition here.
|
||||
// This is an edge-case, as most-frequently data won't
|
||||
// be pooled so synchronously, but is definitely possible.
|
||||
// REMARK: There's an obvious race-condition here. This is an edge-case, as
|
||||
// most-frequently data won't be pooled so synchronously, but is
|
||||
// definitely possible.
|
||||
//
|
||||
// See: https://github.com/pion/sctp/issues/181
|
||||
time.Sleep(time.Microsecond)
|
||||
|
@ -57,10 +57,10 @@ interface WaitForClientSideNavigationOpts {
|
||||
* @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
|
||||
* from the server).
|
||||
*
|
||||
* @todo Better logging for this.
|
||||
*/
|
||||
export const waitForClientSideNavigation = async (page: Page, opts: WaitForClientSideNavigationOpts): Promise<void> => {
|
||||
console.info(`--- waitForClientSideNavigation: start`)
|
||||
|
||||
await Promise.all([
|
||||
waitFor(() => {
|
||||
const conditions: boolean[] = []
|
||||
@ -74,9 +74,12 @@ export const waitForClientSideNavigation = async (page: Page, opts: WaitForClien
|
||||
}
|
||||
|
||||
const unmetConditions = conditions.filter((condition) => !condition)
|
||||
console.info(`--- waitForClientSideNavigation: ${unmetConditions.length} conditions not met`)
|
||||
|
||||
return Promise.resolve(unmetConditions.length === 0)
|
||||
}),
|
||||
page.waitForLoadState("networkidle"),
|
||||
])
|
||||
|
||||
console.info(`--- waitForClientSideNavigation: done`)
|
||||
}
|
||||
|
@ -270,8 +270,6 @@ func secureHeaders(next http.Handler) http.Handler {
|
||||
|
||||
// Only scripts can manipulate the dom. This prevents someone from
|
||||
// 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'"},
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
* TextField component is used.
|
||||
@ -145,13 +145,8 @@ export const FormTextField = <T,>({
|
||||
}
|
||||
|
||||
const event = e
|
||||
if (typeof eventTransform !== "undefined") {
|
||||
// TODO(Grey): Asserting the type as a string here is not quite
|
||||
// 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
|
||||
if (typeof eventTransform !== "undefined" && typeof event.target.value === "string") {
|
||||
event.target.value = eventTransform(e.target.value)
|
||||
}
|
||||
form.handleChange(event)
|
||||
}}
|
||||
|
@ -25,9 +25,8 @@ export const TemplatePage: React.FC = () => {
|
||||
() => `/api/v2/organizations/${unsafeSWRArgument(organizationInfo).id}/templates/${templateName}`,
|
||||
)
|
||||
|
||||
// TODO: The workspaces endpoint was recently changed, so that we can't get
|
||||
// workspaces per-template. This just grabs all workspaces... and then
|
||||
// later filters them to match the current template.
|
||||
// This just grabs all workspaces... and then later filters them to match the
|
||||
// current template.
|
||||
const { data: workspaces, error: workspacesError } = useSWR<Workspace[], Error>(() => `/api/v2/users/me/workspaces`)
|
||||
|
||||
if (organizationError) {
|
||||
|
Reference in New Issue
Block a user