tbr: swift: Use internal__/syncgroups as the prefix in userdata for auto-join

Use the same updated internal__/syncgroups/<syncgroup id> key namespacing
as Java currently does.

Change-Id: Id28043000f63347864397957c7eedbef94887e0e
diff --git a/Syncbase/Source/Database.swift b/Syncbase/Source/Database.swift
index 3e28791..e0370ff 100644
--- a/Syncbase/Source/Database.swift
+++ b/Syncbase/Source/Database.swift
@@ -418,7 +418,7 @@
               let change = WatchChange(coreChange: coreChange)
               let isUserdataCollection = change.collectionId?.name == Syncbase.UserdataSyncgroupName
               let isInternalUserdata = isUserdataCollection &&
-              (change.row?.hasPrefix(Syncbase.UserdataCollectionPrefix) ?? false)
+              (change.row?.hasPrefix(Syncbase.UserdataInternalPrefix) ?? false)
 
               // There are two diff kinds of watches -- the internal-only version that only passes
               // internal userdata changes (specifically, puts into the userdata collection with the
diff --git a/Syncbase/Source/Syncbase.swift b/Syncbase/Source/Syncbase.swift
index 1dd325f..2cd4fec 100644
--- a/Syncbase/Source/Syncbase.swift
+++ b/Syncbase/Source/Syncbase.swift
@@ -11,7 +11,8 @@
   // Constants
   static let DbName = "db"
   public static let UserdataSyncgroupName = "userdata__",
-    UserdataCollectionPrefix = "__collections/"
+    UserdataInternalPrefix = "internal__/",
+    UserdataInternalSyncgroupPrefix = UserdataInternalPrefix + "syncgroups/"
   // Initialization state
   static var isUnitTest = false
   static var didInit = false
@@ -67,8 +68,8 @@
   ///
   /// The "userdata" collection is a per-user collection (and associated syncgroup) for data that
   /// should automatically get synced across a given user's devices. It has the following schema:
-  /// - `/syncgroups/{encodedSyncgroupId}` -> `nil`
-  /// - `/ignoredInvites/{encodedSyncgroupId}` -> `nil`
+  /// - `internal__/syncgroups/{encodedSyncgroupId}` -> `nil`
+  /// - `internal__/ignoredInvites/{encodedSyncgroupId}` -> `nil`
   ///
   /// Cloud usage is optional. It can be used for initial bootstrapping and increased data
   /// availability. Apps that use a cloud will automatically synchronize data across all of the same
@@ -231,7 +232,7 @@
         continue
       }
       guard let syncgroupId = try? Identifier.decode(
-        row.stringByReplacingOccurrencesOfString(Syncbase.UserdataCollectionPrefix, withString: "")) else {
+        row.stringByReplacingOccurrencesOfString(Syncbase.UserdataInternalSyncgroupPrefix, withString: "")) else {
           print("Syncbase - Unable to decode userdata key: (row)")
           continue
       }
@@ -254,7 +255,7 @@
     guard let userdataCollection = Syncbase.userdataCollection else {
       throw SyncbaseError.IllegalArgument(detail: "No user data collection")
     }
-    try userdataCollection.put(try Syncbase.UserdataCollectionPrefix + syncgroupId.encode(), value: NSData())
+    try userdataCollection.put(try Syncbase.UserdataInternalSyncgroupPrefix + syncgroupId.encode(), value: NSData())
   }
 
   static func syncgroupInUserdata(syncgroupId: Identifier) throws -> Bool {
@@ -267,7 +268,7 @@
     guard let userdataCollection = Syncbase.userdataCollection else {
       throw SyncbaseError.IllegalArgument(detail: "No user data collection")
     }
-    return try userdataCollection.exists(try Syncbase.UserdataCollectionPrefix + syncgroupId.encode())
+    return try userdataCollection.exists(try Syncbase.UserdataInternalSyncgroupPrefix + syncgroupId.encode())
   }
 
   /// Returns the shared database handle. Must have already called `configure` and be logged in,