@@ -258,8 +258,9 @@ UI.widgets.findAppInstances = function(context, klass) {
258258UI . widgets . registrationControl = function ( context , instance , klass ) {
259259 return new Promise ( function ( resolve , reject ) {
260260 var kb = UI . store , ns = UI . ns , me = context . me , fetcher = UI . store . fetcher ;
261+ var dom = context . dom
261262
262- var box = context . dom . createElement ( 'div' ) ;
263+ var box = dom . createElement ( 'div' ) ;
263264 context . div . appendChild ( box ) ;
264265 return UI . widgets . ensureTypeIndexes ( context )
265266 . then ( function ( indexes ) {
@@ -567,43 +568,39 @@ UI.widgets.checkUser = function(doc, setIt) {
567568 if ( ! userMirror ) userMirror = doc ;
568569 var kb = UI . store
569570 kb . fetcher . nowOrWhenFetched ( userMirror . uri , undefined , function ( ok , body ) {
570- var done = false ;
571- if ( ok ) {
572- kb . each ( undefined , UI . ns . link ( 'requestedURI' ) , $rdf . uri . docpart ( userMirror . uri ) )
573- . map ( function ( request ) {
571+ if ( ! ok ) {
572+ var message = "checkUser: Unable to load " + userMirror . uri + ": " + body ;
573+ console . log ( message )
574+ setIt ( null )
575+ } else {
576+ var allUserHeaders = [ ]
577+ var requests = kb . each ( undefined , UI . ns . link ( 'requestedURI' ) , $rdf . uri . docpart ( userMirror . uri ) )
578+ requests . map ( function ( request ) {
574579
575- var response = kb . any ( request , UI . ns . link ( 'response' ) ) ;
580+ var response = kb . any ( request , UI . ns . link ( 'response' ) )
576581 if ( response !== undefined ) {
577- var userHeaders = kb . each ( response , UI . ns . httph ( 'user' ) ) ;
578- if ( userHeaders . length === 0 ) {
579- console . log ( "CheckUser: non-solid server: trying "
580- + UI . widgets . userCheckSite ) ;
581- UI . widgets . checkUser (
582- kb . sym ( UI . widgets . userCheckSite ) , setIt )
583- } else {
584- userHeaders . map ( function ( userHeader ) {
585- var username = userHeader . value . trim ( ) ;
582+ var userHeaders = kb . each ( response , UI . ns . httph ( 'user' ) )
583+ allUserHeaders = allUserHeaders . concat ( userHeaders )
584+ }
585+ } )
586+
587+ if ( allUserHeaders . length === 0 && userMirror . uri !== UI . widgets . userCheckSite ) {
588+ console . log ( "CheckUser: non-solid server" + userMirror + ": trying "
589+ + UI . widgets . userCheckSite ) ;
590+ UI . widgets . checkUser (
591+ kb . sym ( UI . widgets . userCheckSite ) , setIt )
592+ } else {
593+
594+ var username = allUserHeaders [ 0 ] . value . trim ( ) ;
586595 if ( username . slice ( 0 , 4 ) !== 'dns:' ) { // dns: are pseudo-usernames from rww.io and don't count
587- setIt ( username ) ;
588- done = true ;
589- }
596+ setIt ( username ) ;
597+ } else {
598+ setIt ( null )
599+ }
600+ }
601+ }
590602 } ) ;
591- }
592- }
593- } ) ;
594- } else {
595- var message = "checkUser: Unable to load " + userMirror . uri + ": " + body ;
596- try { // Ugh
597- console . log ( message ) ;
598- UI . log . alert ( message ) ;
599- } catch ( e ) {
600- try {
601- alert ( message ) ;
602- } catch ( e ) {
603- } ;
604- }
605- }
606- } ) ;
603+
607604} ;
608605
609606// What ID does the user use to log into the given target?
@@ -641,30 +638,14 @@ UI.widgets.checkUserForTarget = function(context) {
641638
642639// Login status box
643640//
644- // Shows
641+ // A big sign-up/sign in box or a logout box depending on the state
642+ //
645643UI . widgets . loginStatusBox = function ( myDocument , listener ) {
646644 var me_uri = tabulator . preferences . get ( 'me' ) ;
647645 var me = me_uri && UI . store . sym ( me_uri ) ;
648646
649647 var box = myDocument . createElement ( 'div' ) ;
650648
651- var logoutButton = function ( me ) {
652- var logoutLabel = 'Web ID logout' ;
653- if ( me ) {
654- var nick = UI . store . any ( me , UI . ns . foaf ( 'nick' ) ) ||
655- UI . store . any ( me , UI . ns . foaf ( 'name' ) ) ;
656- if ( nick ) {
657- logoutLabel = 'Logout ' + nick . value ;
658- } ;
659- } ;
660- var signOutButton = myDocument . createElement ( 'input' ) ;
661- signOutButton . className = 'WebIDCancelButton' ;
662- signOutButton . setAttribute ( 'type' , 'button' ) ;
663- signOutButton . setAttribute ( 'value' , logoutLabel ) ;
664- signOutButton . addEventListener ( 'click' , zapIt , false ) ;
665- return signOutButton ;
666- } ;
667-
668649 var setIt = function ( newid ) {
669650 tabulator . preferences . set ( 'me' , newid ) ;
670651 me_uri = newid ;
@@ -682,8 +663,6 @@ UI.widgets.loginStatusBox = function(myDocument, listener) {
682663 if ( listener ) listener ( newid ) ;
683664 } ;
684665
685- var sisu = UI . widgets . signInOrSignUpBox ( myDocument , setIt ) ;
686-
687666 var zapIt = function ( ) {
688667 tabulator . preferences . set ( 'me' , '' ) ;
689668 var message = 'Your Web ID was ' + me + '. It has been forgotten.' ;
@@ -698,9 +677,26 @@ UI.widgets.loginStatusBox = function(myDocument, listener) {
698677 } ;
699678 }
700679 box . refresh ( ) ;
701- if ( listener ) listener ( undefined ) ;
680+ if ( listener ) listener ( null ) ;
702681 }
703682
683+ var logoutButton = function ( me ) {
684+ var logoutLabel = 'Web ID logout' ;
685+ if ( me ) {
686+ var nick = UI . store . any ( me , UI . ns . foaf ( 'nick' ) ) ||
687+ UI . store . any ( me , UI . ns . foaf ( 'name' ) ) ;
688+ if ( nick ) {
689+ logoutLabel = 'Logout ' + nick . value ;
690+ } ;
691+ } ;
692+ var signOutButton = myDocument . createElement ( 'input' ) ;
693+ signOutButton . className = 'WebIDCancelButton' ;
694+ signOutButton . setAttribute ( 'type' , 'button' ) ;
695+ signOutButton . setAttribute ( 'value' , logoutLabel ) ;
696+ signOutButton . addEventListener ( 'click' , zapIt , false ) ;
697+ return signOutButton ;
698+ } ;
699+
704700 box . refresh = function ( ) {
705701 var me_uri = tabulator . preferences . get ( 'me' ) || '' ;
706702 var me = me_uri ? UI . store . sym ( me_uri ) : null ;
@@ -709,7 +705,7 @@ UI.widgets.loginStatusBox = function(myDocument, listener) {
709705 if ( me ) {
710706 box . appendChild ( logoutButton ( me ) ) ;
711707 } else {
712- box . appendChild ( UI . widgets . signInOrSignUpBox ( myDocument , listener ) ) ;
708+ box . appendChild ( UI . widgets . signInOrSignUpBox ( myDocument , setIt ) ) ;
713709 } ;
714710 }
715711 box . me = me_uri ;
@@ -892,7 +888,7 @@ UI.widgets.selectWorkspace = function(dom, appDetails, callbackWS) {
892888 button . textContent = "Continue" ;
893889 // button.setAttribute('style', style);
894890 var newBase = figureOutBase ( selectedWorkspace ) ;
895- // @@ show the user the URI
891+ // @@ show the user the URI
896892 button . addEventListener ( 'click' , function ( e ) {
897893 button . disabled = true ;
898894 callbackWS ( selectedWorkspace , newBase ) ;
0 commit comments